-ㅂ니다 is for being polite to the person you are talking with, while -시- is for being polite to the person you are talking about. Let me give you some examples: if A and B are having a conversation and A said:
"김 선생은 차 타고 서울로 갑니다": then A is being polite to B. Also, in principle, B is considered superior (or at least not inferior) to 김 선생, but we don't know who is superior between A and 김 선생. However, in practice, this is very often used incorrectly when "Also..." is not the case.
"김 선생님은 차 타고 서울로 가십니다": then A is being polite to B, and 김 선생님 is superior to both A and B, in principle. However, people very often make mistake of saying this instead of the previous phrase when 김 선생님 is superior to A but not to B.
"김 선생님은 차 타고 서울로 가셨어": then 김 선생님 is superior to B, and A is at least not inferior to B. I would think that 김 선생님 is also superior to A.
"김 선생은 차 타고 서울로 갔어": then A is at least not inferior to B, and 김 선생 is inferior to B (and also to A with very high probability).
The rule is that if B is superior to 김 선생 and 김 선생 is superior to A, A should NOT use polite words for 김 선생 when talking to B, so the first sentence is correct in this situation. This rule is called 압존법. However, people make so many mistake of saying the second sentence instead of first, so you should NOT expect people to follow this rule. Some even say that this rule should be changed to fit the common usage.