As far as I am concerned, there is no difference between "надо" and "нужно" when you use them with a verb: Надо/нужно сделать что-то - It's necessary to do something/something should be done.
The original sentence is not of this type, however: a subject, not an action is being needed in this example. "Надо" is simply not applicable to this kind of sentences.
EDIT: Just came across this thread, which contains a very exhaustive explanation: https://www.duolingo.com/comment/11775228
Actually, the subject here is "учитель", not "школа" -- the whole construction is passive in Russian. And contrary to what Alexmalaho said, нужен means is needed, not "needs". So, grammatically, the Russian sentence corresponds to "A new teacher is needed by the school". And because "учитель" is masculine, a masculine form "нужен" is used here.
Hmm. If by "social class" you mean people who went to university, then sure - but these are precisely the people who are familiar with the appropriate terminology. In any case, it would not occur to me to refer to a university teacher as "учитель" except, perhaps, in its meaning as a personal mentor who has strongly influenced my development.
Not all of them unfortunately.