Are Four 74HC595 Sift-registers in a row too many?

If you currently have the 4 of them daisychained, then yes, it changes the wiring.

So keeping it the same:
Now that you've stated what you want to do a little more, you can take this approach:
when the command comes in, have a specific byte changed in the data array, but be sure to shift out all 4 bytes every time:

if (Serial.available()>1){  // look for 2 bytes - 1st is register, 2nd is the data it gets
register = Serial.read();
newData = Serial.read();
dataByte[register] = newData;
updateOutput = 1;
}

then clock all 4 out when a change happens

if (updateOutput ==1){
updateOutput = 0; // clear for next time
for (int x = 0; x<4; x=x+1){
digitalWrite (ssPin[x], LOW);
SPI.transfer (dataByte[x]);
digitalWrite(ssPin[x], HIGH);
}

or do similar, but look for 4 bytes to come in every time:

if (Serial.available()>3){  // look for 4 bytes - update the data array

dataByte[0] = Serial.read();
dataByte[1] = Serial.read();
dataByte[2] = Serial.read();
dataByte[3] = Serial.read();
updateOutput = 1;
}