Looking in the dictionary, одолеть and преодолеть both share pretty much the same meanings. So is there any substantial difference between the two or are they interchangeable?
"Преодолевать-преодолеть" is more widely used than "одолевать-одолеть" in the sense of "overcome". For example, "to overcome difficulties" is better translated as "преодолеть трудности" than "одолеть трудности".
However, the verb "одолевать-одолеть" has two meanings, that the verb "преодолевать-преодолеть" doesn't have. The first one is "to defeat smb":
Он меня одолел. He defeated me.
The second one is "to be possessed, overwhelmed by a feeling":
Его одолела тоска. He was overwhelmed by melancholy.