It's somewhat true that, due to the fact that x86(_64) are just virtual machine languages to modern processors which actually work much differently inside than the instructions would imply, the instruction set advantages to long mode are very small and sometimes negative (need twice as much space to store an address).
However, the much larger address space is a huge advantage. Address way more memory in total, and way more per app. I'll even make the very dangerous bet that it won't run out of address space within 20 years for desktop systems. In fact mapping shared libraries and memory operations in general are just way simpler / more elegant... it's even easier too debug running programs because the stack starts at a convenient address. All the alternatives you mention are dirty hacks. Lack of support for 16-bit mode is actually a bonus.
Finally, the open source community only took a year or two to transition to perfect 64-bit support, and it's been fine since at least 2005. In fact, you might find that the majority of software for windows available in a 64-bit version is... open source!
Flash worked fine with nspluginwrapper + flashblock for years, but since the 64-bit version came out I've been running pure 64-bit linux systems.
Anyway, my point is: I would consider myself to be pragmatic, but I'm sure many would consider me to be an idealist free-software advocate, because it seems clear to me that the big commercial powers in the personal computer world greatly hinder technological advancement, something I'm rather fond of. This is slashdot, after all. 64 bit support is a perfect example.
Adobe, Microsoft... see, this is why we can't have nice things!