Darren,
First, I would ask why you need to multiplex the inputs. Your DAQ Cards have built in multiplexing, so you could actually bypass yoru hardware multiplexer.
However, if you can't, I would output the Read Start (or equivalent) signal to the DAQ Card timing inputs (check your manual) to synchronize the DAQ with your multiplexer.
As for your second question, just poll a boolean at about 10ms (this will be your time resolution for button presses) that is attached to the DIO Write. This should accomplish what you need in a fairly easy-to-implement manner.
Hope this helps