You don't really access individual pins with a SIPO shift register, you have to shift all 8 bits in to change any of them.
However you can do what you suggest by remembering the current bit pattern, changing the bits you want to, then shift all 8 into the register. As you need to PWM all 8 pins at presumably different duty cycles the code would get a little messy, however as the pulses only have to be produced at 50Hz it's doable.
You would have to keep a table of the 8 servo pulse lengths, then every 20mS write FF to the 595 and start timing. As the time matches the required length of each servo pulse set it's bit to 0 and write all 8 bits to the 595 again.
The shortest pulse will be 750uS and longest 2250uS so you may have to do 8 full shifts into the 595 over the next 1500uS as each servo's pulse width is up. (less if some have the same pulse width)
I may be wrong, but a regular arduino + servo shield for 20 servos may be over $50.
It might be worth it to buy an arduino mega. That's up to 48 servos! Plus a bunch of extra pins.