I’m partial to #3 mostly because it’s so simple. It’s something I imagine plebs could do for a noncustodial node they run themselves after following a straightforward guide.
It also seems like the least expensive experiment to run given the protocol doesn’t need to change. It’s the perfect plan A.
It would suck as a wallet provider though. If there’s some way to not need a dns record for every username that’d be ideal. If there isn’t a way to do that (I haven’t thought about it much), you’d probably also want to provide #1 for custodians.