Since the LEDs effectively ARE shift registers daisychained together there is no way to update a single LED, you doneed to refresh the complete string. But if you design a 192x12 display you could, for example have 12 separate strings of 192 leds so that you could update the display row by row - if that helps.

You'll need a PIC with lots of RAM though, 192x12x3=6912 bytes to hold the display data.

And, since you talk about efficiency, forget SHIFTOUT and start using the MSSP module or the SPI module on the newer PICs instead.