Instead of a bank of shift register, try two MAX7219s, each controlling 64 LEDs.
Wire as 8 groups of 8 for each 64. Each group will have a common cathode that goes to a Digit pin, all groups will have A anode in parallel, B anode in parallel, etc, going to a Segment pin.
Then you merely do an SPI.transfer() to one of registers on each chip to update your display.
Or even easier, just send all 16 out whenever a change is made.
Keep an array of 16 bytes for your data, when a byte changes, send the array out.
MACX7219 has built in current control with maximum brightness set by 1 external resistor, dimmable in 15 steps with a command to a register.