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

You said you had 4 shift registers.
Whatever you clock in always get pushed along to the next one when you clock in new data.
It sounds like what you want to do is be able to address the 4 of them individually.
In that case, define & use 4 ss pins (ss1, ss2, ss3, ss4) so you shift data into 1 part at a time.

// can make them an array even
ssPin[ ] = {7,8,9,10}; // the 4 ss pins
dataByte [ ] = {0,0,0,0};
// so you can address them as a variable
void setup(){
  for (int x =0; x<4; x=x+1){
    pinMode (ssPin[x], OUTPUT);
    digitalWrite (ssPin[x], LOW);
    }
}
// then in void loop(), or your function call:
digitalWrite (ssPin[x], LOW);
SPI.transfer (dataByte[x]);
digitalWrite(ssPin[x], HIGH);