However, how does this work if a device doesn't have a CS pin?
Not very well.
"SPI" is used to describe a
variety of serial, shift-register-like interfaces, not just the 4-wire one designed by Motorola.
The TLC5947 is one of those that uses "SPI" merely as an abbreviation, not a reference to the Moto/AVR/Arduino standard.
Another thing to watch out for is that some (all??) of the Wiznet-based Ethernet shields don't implement CS properly, so you'll have problems if you try to mix them with another SPI device. A forum search will turn up at least one thread started by someone who discovered this the hard way >

A forum search should also turn up threads by folks who've gotten the TLC5947 working (I'm
pretty sure I've seen some, but I could be mistaken).
Ran