Having thought about this question for a while, I came to another idea. To me it feels like "мне надо" means "I have to" do something for somebody else, or for getting an official permission for something. Whilst "мне нужно" sounds more like "I need it" or "I want it", I must do it because I want it. That being said, they are still swappable: "мне надо сходить к доктору" and "мне нужно сходить к доктору", "мне надо поспать" and "мне нужно поспать", "мне надо доделать работу" and "мне нужно доделать работу". They are swappable in all these 3 cases.
Even more update:
I was typing the previous paragraph and noticed that, indeed, the phrase "мне нужно" has two absolutely correct translations to English: one is I need and the other is I must or I have to. And the phrase "мне надо" can STILL mean "I need" or "I need to", but in most cases I would translate it as "I must" or "I have to".
Hope my explanation helps you =)