Why are transactions not used for signalling? Currently miners can signal for certain BIP proposals. But users cannot signal, that's why they need to indirectly force miners to vote for them, using UASF's.

But why are transactions not used for signalling? For example 1 transaction = 1 vote. That would allow a very large userbase to signal directly without the miners, and seems pretty foolproof, since both censoring or creating them (just for the purpose of influencing the vote) will be very expensive to an attacker. 

It feels like a much nicer solution than a UASF, so what am I overlooking here?
Such a system could be easily gamed by people who simply spam the network with transactions and by miners who choose what transactions to include in their blocks. The penalty which they incur is still very small as compared to income of major economic players. 

It does not take into account the amount of coins and also does not consider the vote of people who are simply holding bitcoins.
Such a metric would only be misleading. 

There was a dicussion on this and a way for wallets to implement this on bitcoin-dev mailing list under the title
[bitcoin-dev] Transaction signalling through output address hashing 
https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-February/013532.html