To start with the easiest part, 「わかんない」 is just the Kanto colloquial pronunciation of 「わからない」, and I will use the dictionary form in my explanation.
It appears to me that you are thinking of the "other"「わからない」, which is the negative form of the verb 「わかる」, are you not?
The 「わからない」 in the context in question needs to be understood and treated as an adjective, which is why it can take 「こと」 with it. It means "not sensible", "dense", "dull-witted", etc.
「Verb in Dictionary Form + の/ん + では/じゃ + ないの」
is a negative imperative form; therefore 「言うんじゃないのっ」 means "Don't say ~~!"
「わかんないこと言うんじゃないのっ」 thus literally means "Don't say an insensible thing!". So all you have to do now would be to turn that into natural English. I am in no position to give you natural English for obvious reasons, but the phrase that came instantly into my mind upon reading this question was indeed "Don't gimme crap!"
why is こと used rather than just と?
Because 「わかんない」 is used as an adjective here. Noun 「こと」 can follow it naturally and smoothly. Using 「と」 is impossible because the speaker is not quoting.
Also I'm guessing there's a を that's been omitted?
Precisely. 「わかんない」 is colloquial and so is 「言うんじゃないのっ」. One should reasonably expect particle omission in such speech.