If two clients have good implementation, there is nothing messy about user experience. The only problem is that most clients are developed by hobbyists in their spare time, who might have very different ideas on how to do key verification, etc, so you get only what you get. It is not because of the protocol.
No, I don't. OMEMO practically's only benefit is fixing that one usecase.
By the way, iMessage is XMPP. Whatsapp is XMPP. Just artificially closed. Long etc.
I've heard these rumors, but they don't seem to be true. WhatsApp seems to have moved on a long time ago (to a binary format wrapped in an implementation of the noise protocol framework) and I find zero indication iMessage was ever XMPP.
But that's besides the point. XMPP is great for a uniform ecosystem (in fact, a lot of XEPs are some company standardizing their use-case), but awful if you allow federation and third party clients.
Every instance of that is a huge guesswork mess that I wouldn't wish upon average people to navigate though. RCS has tons of "maybe implement" features, and don't even get me started on the mess that's XMPP. If you ever tried to use OMEMO from two different clients at once, you know what I'm talking about.