@hek
Hmm, yeah that would work. It just seems like overkill for a few extra pins (price and size wise). I didn't realize there were 8 analog pins on the APM, those should actually be enough to drive all the things as long as they work OK as digital outputs.
I figure the shift register will cause problems because I won't be able to build an 'AccelStepper' object since the input for the constructor is a pin number. I assume I'd have to modify the code if I want to put it through the shift register.