If your having heating issues with transistors used on the fans, mount the transistor to your heatsink, that will solve the issue. I used bd138 if memory servs corectly on the controlls for mine (normal 3 wire fans) and it did need a small heatsink to stay cool running about 600mA to the fans, I don't think they would have burned up as I ran them for 8 hours with no heatsink for a test and they didn't shut down but got hot enough I was worried they could start a fire mounted into a canopy so I heatsinked them and they stay cool now.
I needed to add a capacitor to stop the anoying buz they were making but otherwise used the first diagram posted earlier on, with a diode, and the resistor for the base leg. cranking up the arduino to 25khz works too........