Controlling individual LED strips of different kinds and lengths with a single microcontroller
I'm almost completely sure they're common anode(12V+ pin + 3 for each color channel to GND).


OK. So we need to switch the GND pins (low-side switch).

TP120 VCE(sat) = 2.0 Vdc (Max) @ IC = 3.0 Adc
               = 4.0 Vdc (Max) @ IC = 5.0 Adc


Well your LEDs aren't gonna light very well if the transistor eats 2-4V from their 12V supply. So we use a MOSFET.

Max current per strip is about 5A. We dont want heatsinks, so this means 0.5W max dissipated in the switch. So we should select a MOSFET with 20mOhm RdsON. If driven from 5V these should be a logic level FET.

Example. Just use DigiKey/Mouser search engine with criteria: RdsON&lt;20mOhm, Vds 20-40V, Id>10A, Thru-Hole, Sort by price. If driven from 5V, add RdsON&lt;20mOhm for Vgs=4.5V, otherwise it will be at 10V Vgs.

Place them in the power supply air flow for cooling.

Now, the driver... your TLC5940 outputs are current sinks, meant to drive LEDs directly. It can't drive a FET without some help.

You could connect the outputs to the FET gates and add pullups, but signals will be inverted (LEDs will light fully when PWM is at 0%).

Or you could use an extra transistor as an inverter like this guy. Seems pretty easy.

In this case since the FET is driven from +12V you don't even need a logic level FET.