One important reason I'm not moving to an alt-chain is the distributed exchange between bitcoin and MasterCoin, which isn't possible if we are on an alt-chain, since it requires using data from standard bitcoin transactions AND MasterCoin transactions to work.
It
is possible.
Mastercoin client can follow both Bitcoin chain and "alt-chain" at the same time.
Mastercoin works by inserting messages into Bitcoin blockchain. It is done for two reasons: to distributed these messages, and to make sure that the order they appear in blockchain is fixed and can be agreed upon.
But what happens if we would do it in other way: assemble a list of Mastercoin messages, hash it, and publish this hash in the blockchain?
This will definitely make the order of messages certain, just like in the previous case. But you'll have to distribute the list by other means.
Of course, Mastercoin client still has to follow Bitcoin blockchain to know the order of messages, but the difference is that you only need to insert much less data into the Bitcoin blockchain: only 32 bytes per block. The rest can be stored elsewhere.
And as Mastercoin client has to follow Bitcoin blockchain anyway, you can easily implement cross-chain trade, it won't be in any way different from implementation you have now, I think.
Of course, it isn't as easy as I described: it isn't clear who assembles Mastercoin message list and how it is inserted into Bitcoin blockchain.
A design similar to merged mining would be somewhat inconvenient: mastercoin message list hash won't be included into each Bitcoin block, and so it would take more time to confirm mastercoin transactions.
But possibly there is some clever way to deal with it. For example, differentiation between soft and hard confirmations.
In any case, there is no strong need to put data into Bitcoin blockchain.
It might be an easier thing to do, but it isn't a fundamental need.