The P channel mosfets are the IRF9540 which are rated at 23A
The N channel mosfets are the IRF540 which are rated at 33A
Heatshinks are usually needed for more than a minute operation....generally for big loads.... these are building heat way too fast...
Although there is both passive and active heatshinks the copper layer should have been more than enough for such small currents...
At 1% PWM the motor runs pretty clean... It shouldn't need more than 200 - 300mA.... Still the mosfets are having
a tequila party...

I wrote it... At full PWM duty, the Mosfets are actually cooling down!!!!

That's why I seriously suspect the switching times...
I even stall the motor and heat isn't build so fast... It's a design issue... I'm almost sure that it's
caused by the switching times of the MOSFETs but I'll run without a motor to test this assumption...
It should be for one or two resistor values to change per channel nothing more... (cause of the capacitive behavior of the mosfet gate)...
Also for me even 60C is good to touch... I never tested limits... ( I don't really want to tell the truth )
I should find my temp prop to test also this out...