soil moisture sensors and watering system using shift registers and analog mux's

Something like:

#define shiftRegisterCount 4

byte shiftRegister[shiftRegisterCount];

void setRegisterBit(int i, int v) {
  bitWrite(shiftRegister[i>>3], i && 7, v);
}

void updateShiftRegisters() {
  digitalWrite(latchPin, LOW);
  for (int i=0; i < shiftRegisterCount; i++)
    shiftOut(dataPin, clockPin, LSBFIRST, shiftRegister[i]);
  digitalWrite(latchPin, HIGH);
}

(untested, not even compiled!)