CrossRoads:
A pair of TPIC6C595 can drive 8 bicolor LEDs. You can daisy chain as many as you want, I've done up to 45, with the Arduino driving 5 74HC125s, and the 125s then driving 9 each of the 595s. 8 x 45 = 360 LEDs, well I guess 180 in this application.The TPICs are open drain outputs. When you shift in a 0, the outputs are off and no current is sunk - LEDs are off. When you shift in a 1, the output turns on and current is sunk to turn on an LED. If both TPICs are On, or both are off, the LEDs have the same voltage across them (~0V, or ~5V), and do not turn on.
The smallest SMD RGB LEDs I know of are in the '5050' package, 5mm x 5mm, 4 pin for addressable parts like WS2812B and 6 pin for 'dumb' parts needing current control per LED.
Looking at the 74HC125s now. I haven't used these before.
The addressable LEDs would work but I have no way of mounting them under a panel and I can't find any light pipes that would work.