RE: soft-forking an "extension block":
So... go for it, code it up. Implement it in the Bitcoin Core wallet.
Then ask the various wallet developer how long it would take them to update their software to support something like this, and do some UI mockups of what the experience would look like for users.
If there are two engineering solutions to a problem, one really simple, and one complex, why would you pick the complex one?
Especially if the complex solution has all of the problems of the simple one (20MB extension blocks are just as "dangerous" as 20MB main blocks, yes? If not, why not?)