1. I think you have a typo in there. Isn't it 吐かないでもらおうか ? If so, this is a very common construction. ~ないでください、 ~ないでもらう etc. The で is the conjugation of the preceding verb.
2. Yes, as you said in the end of your sentence (and as I mentioned above), the で is for 吐かないで. So 吐かないでもらう means literally "receive your not spitting out". もらう indicates the speaker is taking a challenging stance towards the person saying the "vile things". In English we might say, "I'll not have you saying such things", but Japanese its not unusual to say "I'll have you not saying such things".
3. Again, the もらう indicates the speaker's intention to challenge or assert dominance over the person he is challenging. Compare to the more polite "ください" (please give me). もらう (I will receive) is more forceful and challenging. The person saying this is not asking for a favor, but is making a demand.
Its a common construction. To my mind, the kanji used in the sentence are actually more high-level than the grammar.