This also isn't a real problem, since the essential elements of the transaction (inputs, outputs, amounts) can't be changed in this way.
If you were designing a system from scratch, is there any reason you would think the current behaviour of Bitcoin is desirable?
We just need to let go of the tx-id as a bookkeeping tool.
The standard response from pools and exchanges if someone complains that their payment hasn't gone through is for them to search for the transaction in the blockchain.
Up to now, people (including the reference software)
have relied on the transaction id being meaningful.