That's 18 buttons. You have 1 to spare!
Errrm, maybe - Depends what the cabinet will be used for. Your Ultrastick 360's report as gamepad buttons. Your TurboTwist reports as mouse buttons.
MAME will allow you to map basically any gamepad and any mouse button to any input. So for MAME you are pretty much fine with your suggestion.
For other emulators, I am not sure that all recognize gamepad inputs, and/or would allow mouse buttons to be used for coin inputs or Exit commands. I just ran into a problem with keyboard inputs with Nebula M2. It allows re-mapping of button inputs, but save states are hard-coded as CTRL-1,CTRL-2, etc, so if you re-map to MAME defaults, P1B1 and P2Coin, or P2 Start generates a save state load.
There are ways to work around these issues (Don't use the MAME defaults and either re-program the encoder or modify the outputs for Nebula M2).
For wudaben: AutoHotKey will recognize mouse buttons inputs (and convert them to keypresses), and RBjoy or Joytokey will convert gamepad/joypad outputs to keypresses. So you could use Scotthh's suggestion, possibly with RBJoy codes and an AutoHotKey script for each emulator to convert mouse buttons to the appropriate keyboard buttons, but if you are using more than MAME, it would likely be a
LOT simpler to pick up a KeyWiz or KeyWiz Eco and wire
all the buttons to it (but not the actual U360 outputs, hook it up via USB so you can still play analog games).