Hm; well, this works for Valkyrie no Bouken, so feel free to test it:
function stuff()
gui.text(8, 8, string.format("%02X", memory.readbyte(0x0026)));
memory.writebyte(0x0026, AND(memory.readbyte(0x0026), 0xFB));
end;
memory.register(0x0026, stuff);
while (true) do
FCEU.frameadvance();
end;
This will intercept writes to the controller address and change them on its own, to remove "Select". This can be tested easily (the cursor won't move on the title screen).
As for it being "slow", it might be a better idea to figure out how breakpoints in the debugger work, and then using that system for Lua. (In fact, you could even have a "Lua registers" list, that could be changed/disabled on the fly via it!)
...
This solution
should work on any game, and allows much easier interception of the controller... the only problem is that you can't "set" keys unless the player themselves is actually doing something, since it won't fire otherwise.