The insurmountable problem with #2, beyond BU's implementation making something absolute like consensus into something fuzzy, is that it is impossible to avoid Sybil manipulation. Also, it isn't really easy to take a poll of all nodes on the network. The closest you could get is asking individual transactions to signal, but that adds extra bloat on chain, and gives the power to users instead of nodes, when really it is a decision for the latter.
Also, a node is just an IP in terms of measuring 'support'.
If you look at nodes you might end up with a super high bandwidth node that serves many concurrent connections, and somebody's tiny Raspberry Pi hobbyist setup over dodgy wifi. Giving each node equal say is ripe for gaming.
Aside from the "fuzzy consensus" bit, would the same shortcomings not apply to nodes signalling for a softfork as is happening currently? That's measurable, so this should be equally so. Plus, we're apparently prepared to accept shenanigans like
client spoofing, when that could have a significantly adverse effect on consensus, because there's no easy way to prevent it. It's the nature of the beast. So while I'm of the mindset "never say never", it's highly unlikely we're going to find a completely fool-proof solution. Hence #1 and #3 being necessary as well.
As an additional safety precaution, is there a way to measure the maturity of a node? Something like a node isn't permitted a vote until it has relayed X amount of blocks? Or is that just my brain drifting into the realms of fantasy? The more algorithmic checks and balances that can be added, the better.
I certainly wouldn't advocate transaction-based signalling while we're in the process of trying to optimise the space they use up, not add to it. Plus, as you mention, SPV clients and other non-load-bearing entities would then get equal say without equal contribution, which hardly seems fair.
The natural order of things is that large blocks favour miners because there's greater potential for profit and small blocks favour nodes because there's less externalised cost. The only solution people will be prepared to accept is to strike a fair balance between the two. It has to be solved somehow.