Four things:
-
I think you need pulldown resistors on the gates of your N-MOSes. Otherwise when your Arduino is off the lights can come on as the gates are not held definitively off.
-
I think you can trigger the N-MOSes with the 74HC595 with a but, the DIP has the highest power dissipation at 750mW or 150mA at 5V. You need to use that to drive all 8 pins so you can draw more than 18.75mA but best to stay under that. A 330 ohm resistor between each output on the 74HC595 and the N-MOS should limit your 5V to just over 15mA.
-
Save the Uno and switch to a MEGA and your programming is simpler and you don't need the shift register.
-
You need resistors in front of the N-MOS gates regardless so you don't over-draw your Arduino's current capabilities.