> "Click to run this wad" button on a WAD gallery page that would download and run the WAD either via NaCl or even just javascript
The Internet Archive's "Internet Arcade" project (https://archive.org/details/internetarcade) is the perfect place to preserve and display these, just as much as it is for old arcade cabinets.
What that implies, though, is that MAME/MESS would need to get over their singular goal of emulating real hardware, and build in support for "abstract" platform-neutral virtual machines that games have been built on: say, ScummVM, or the Z-Machine, or even Shockwave Flash(!).
If they started down that path, they could maybe go further, and also support the execution of low-level game engine "runtimes" like Löve2D.
But go any further than that, and I'd question whether we're really doing "emulation" of a game using an interpreter, rather than shipping a game engine and loading levels in it. With things like the Doom engine—or, say, the RPG Maker 2000 runtime—you get to a the point where, to faithfully run a "game" made with these things, your emulator would have to include the original asset bundle that came with the reference engine. That's not quite an emulator any more.
Maybe what we really need is a Docker-like abstraction for MAME: the ability to have "base images" for game engines, and then "derivative images" that represent projects loaded into those engines—where you only have to load a new "game engine" layer into the emulator when the game you're playing references a version you don't have cached yet.
You could even split things into three layers: a layer for the OS (Windows 95, say); a layer for the game engine; and then a layer for the game project. And the whole thing gets "pulled", revived into a merged container, and then loaded into DOSBox.