"Otrzymać" includes word "trzymać". It means mostly "to keep sth. [in a hand]" or "to keep sb. [using a hand]". You can "tzymać" sth. in a basement, or sb. in a jail, but it still concerns material things.
To get (otrzymać) sth. you have to grab it, BUT to get (dostać) sth. you don't have to grab it. That's why you can "otrzymać" medal (thing), but you can not "otrzymać" a madness (feature).
"Dostać" is close to "doznać" - "to experience" - and say us more about condition. "He has got a fever" we can translate as: "On dostał gorączki" or "On doznał gorączki", literally: "He has experienced a fever". Of course, he couldn't get a fever to his hand.
In the contexts where they can both be used (dostałem/otrzymałem list) they're perfectly interchangeable semantically.
I would say: "dostałem" is a wide term while "otrzymałem" concerns (more or less) material things.
The register differs though, so it's dostałem zaproszenie na przyjęcie w ambasadzie in everyday speech but otrzymałem Pańskie zaproszenie in a formal letter.
Just more precise in this particular situation. Yet even in a formal letter you can find a phrase "dostał silnej gorączki".