I say have a look at using firmata from the Pi.
And to make it really easy, use a Teensy board.
You can load firmata on a Teensy board and then you use the Pi for all the high level stuff
and the Teensy can handle the i/o.
The Teensy can plug into the USB port or an external USB hub and give you the i/o you need
including 5v compatibility.
There are python firmata libraries so you can easily access the i/o pins from the linux world
without having to write any device drivers.
The great thing about using something like firmata, is you can write and debug all you code on your linux
desktop then once it works, simply move it over to the Pi.
--- bill