Just any 74HCT series non-inverting gate or buffer, powered from 5V will do for the upwards level shifter. Unlike the 74HC series, the 74HCT series has TTL compatible input thresholds, which do very well for accepting signals from 3.3V CMOS logic. Also, like 74HC, its outputs swing rail to rail, so there's no problem reaching VOH(min) of other 5V CMOS chips. Note that 74HCT logic isn't suitable for downwards level conversion, though it can of course drive a passive potential divider or series resistor and clamp to do that.
Benta's suggestion of a 74HC14 hex inverter wont work unless you power it from a carefully chosen intermediate voltage between 3.3V and 5V as it has standard CMOS thresholds. The TTL compatible 74HCT14 would be preferable. Also, as its inverting you'd either need to cascade two of its gates for each signal, or modify your software to invert the clock, data and latch signals.
Also the outputs of 74LS or other bipolar TTL logic aren't generally reliably CMOS compatible without a pullup resistor as the Totem Pole output circuit cant drive higher than two diode Vf drops below Vcc.
Although a 3.3V 74HC595 + ULN2803 combo would be significantly cheaper, the ULN2803 has much higher dissipation due to its Darlington BJT outputs, which typically drop about one volt when on. It also doesn't have any current limiting so is not well suited to loads with high inrush current.