It could be handy features, but there are some problems such as :
1. It will make zero-confirmation impossible, especially zero-confirmation is very needed when you pay in store where merchant obviously can't wait 10 minutes.
Zero conf has pretty much been impossible for a while, with RBF and double spending. I think lightning network will be the new way to make instant Bitcoin payments.
2. I think develop your idea would be difficult since developer also have to think how to prevent double-spend or prevent rebroadcast transaction.
I think something like this could be as simple as broadcasting a request to remove a transaction from the mempool.
3. It could make conflict when miner mine a block after you broadcast "cancel TX" to bitcoin network while other nodes receive your broadcast before receive newest mined block which include your transaction.
I don't think there would be a second transaction to cancel the first, as that would take space in the blocks, so it would take fees, so it wouldn't be that helpful. Like I said to your second point, I think a request to remove a transaction from the mempool would be a much better solution.