Thanks for the feedback and comments so far.
Here's kind of the overview with how I use the shift registers...
byte 0, 1, 2 : red cathodes
byte 3, 4, 5 : green cathodes
byte 6: anodes for rowscan
I'm using 8 2222 transistors connected to +5v that get their signals from byte 6 and push out to all 3 panels at the same time. I was originally doing larger 5 panel displays which required this setup, and I like how bright the leds are.
The code to select color is really simple. I keep track of the color cycle with an int and have a case statement before i do the shift outs...
psuedo code
red:
byte 0, 1, 2 on
byte 3, 4, 5 off
green
byte 0, 1, 2 off
byte 3, 4, 5 on
orange:
byte 0, 1, 2, 3, 4, 5 on
Apologies for not having more of the code ready. It takes a lot more time than I thought to clean stuff up for public consumption.

I'll try and put together the info about designing the fonts and interlacing (not the right word, can't think of anything better) two digits into a single 1 byte value in my next post.