The type of markup that Doitsu talks about in his original post is really the only way to tackle these issues, but:
a) I don't think any reading app currently supports it.
b) It would mean the publisher having to go through a book and manually insert the markup. I don't think any publisher would find it economically viable to do that. Publishers want to sell audiobooks; they don't care about TTS.
I've never found a TTS system that will correctly cope with something like "I live on St Peter St" ("I live on Saint Peter Street"), but any human reader will understand it. Ivona, for example, will always read "St" as "Street" (presumably because it's more common than "Saint").
It's disappointing, though, that any decent TTS system wouldn't read "Mr" as "Mister" (although it would probably not do well with reading discussions on MR

).