... I think this is a weakness of the protocol.
How does an empty block (~250 bytes) do you more harm than any other 250 byte, 25BTC transaction?
My point of view is that the miners keep the block chain running and acknowledge transactions. If I miner is not willing to do the second point it does not deserve the 25 BTC. My reaction was to change my bitcoin nodes to accept all blocks but I do not relay a block block if it is the last block, it includes only a fraction of the possible transactions and my local transaction pool sees much more transactions. If I see a block that better fit my rules I replace this last block by the new one.
If everybody includes this kind of change an "empty" block miner will have a small disadvantage.