I'd suggest you don't need to work with the high speed output shift register at all.
What you describe is a simple multiplexed display where the individual digits (14 segments) are turned on for relatively long periods by the 4 enable signals. The data outputs are stable for the complete display period for each digit.
Take the four digit enable signals to 4 328p input pins using the (I assume here) falling edge to trigger an interrupt. You now have an ISR for each digit as it is enabled. Since it's likely that the scan rate for the digits is less than 2 kHz or so, so you could expect that each digit is enabled for about 500 us.
Feed the 14 segment data bits into 2 * 8:1 multiplexers (74HCT151), with the output bits each going to one input pin on your 328p.
Use three output bits on the 328p to set the bit being received from the low/high byte of the segments.
For the code, when you receive an Interrupt from the digit enable:
- Set select to zero (0x000) for the muxes
- Read LS bit on each byte and store value in 2 memory locations for digit.
- Inc select to loop through and read each bit in the low/high byte.
Since the interrupts never conflict, you can use a single routine to read/loop and simply set up a pointer for storing the low/high bits.
This would end up being a 2 chip + MCU solution, with 6 input pins and 3 output pins used on the 328p. You might also need pullup resistors on the scan transistors. (you'd need to provide some schematic information to be able to ascertain the need)