Arduino with Ethernet and TLC59165

I'd like to use either an UNO or MEGA with the Ethernet shield and 3 TLC5916 (shift registers). I am familiar with connecting the Ethernet shield and what libraries to load, but how do I make a second SPI and address it in code?

From what I am reading, any three digital pins would suffice for the second SPI, and shiftIn() and shiftOut() is to be used. Would this work?

I'd like to build a controller which can take 2 x 9 momentary switches (via voltage divider on an analogue pin). The switches have LED indicators, I'd like to switch on or off (based on which switch was pressed), what I use the TLC5916s for.

Why do you need another SPI? From the datasheet the TLC5916 is similar to the 74HC595 and it is possible to cascade several chips together.

One for the Ethernet shield, the other to drive the TLC.
I understand I can use any three pins to emulate a SPI for the TLC.

Not necessarily. Share the same SPI pins, only the SS pin is different for each device. Or just use a different microcontroller like ESP8266 or ESP32. They have WiFi if appropriate.
Or just use shiftOut() for TLCs.