Current usage isn't really a problem for me so I'm happy to use optos. They will be in a V2 of the PCB for next year though.

The existing PCB is running with a few minor modifications and debouce code and so far I've not had a single problem.

Thanks everyone for your help. This thread will be invaluable when I'm designing V2 and other similar PCBs. I'll also be paying more attention to noise from now on.