I'm working on a similar project on the Arduino. In my case switching 16 relays (2 8way boards from China, with opto-isolation). I used 2 * 74HC595 with shared clock and data lines and one enable line per chip, plus a 3rd chip for a LCD display. Everything worked fine until I made contact with the relay boards or relay contacts, and then each chip randomly loaded a new pattern.
I tried tying the lines to 0v, isolating the relay coil power from the processor power, but nothing cured it. As the boards are to be connected to mains lights this was a non-starter. It seems that if you get noise on clk, data and enable pins at the same time, then the ouputs will be set at random. Eliminating noise from simple stripboard is quite a difficult thing to do.
So I've done away with 74HC595 and instead gone for PCF8574 I2C to parallel chips. These only need 2 lines to drive them, and you can have 8 of each chip each bus. They are really stable, and they will only change their outputs when exactly the right signal is sent to them. Plus you can also use them for input or even mixed (some pins input, some output). Cost is about £1.60 each in the UK, but can be bought from china at 5 for £3. So they are about 3 times the cost of the 595 chips, but if you only need 2 or 3, its not a massive increase.
I cant say if coding for I2C is easy on the Pi, as on the Arduino its all done with libraries, but I have implemented an I2C clock on the Pi, and there are some good tools available for playing with the I2C busses.