The basic problem is the rpm you want out of the motor is too low. You can fix this by adding a gearbox, which multiplies torque while increasing motor rpm and reducing current to make the motor more efficient.
A PMDC motor delivers maximum power when loaded down to 50% of no-load rpm. However this also corresponds to 50% of the power being wasted, which will probably overheat the motor unless the voltage is very low. A more practical target rpm is 80% of no-load.
You want 200rpm out at 50% PWM. Your target speed is therefore 4100*0.5*0.8 = 1640rpm. To get 200rpm at the load you need a gearbox ratio of 1640/200 = 8.2:1. This will multiply torque by the same ratio. Since torque is proportional to current, the motor will draw fewer amps and run much cooler.
If you can't get a gearbox with ~8:1 ratio, a lower ratio can still make a big improvement. You can then use a lower supply voltage that matches the lower gear ratio, eg. 35V with 4.1:1, 24V with 2.8:1. The down-side is lower torque multiplication and therefore higher current draw to get the required output torque (so the motor will run hotter).
A secondary cause of excessive heating is your low PWM frequency, which is creating very high current ripple (it is going up to double the measured current when the PWM pulse is on, and down to zero when off). Since power loss in the motor's resistance is proportional to current squared, this causes twice as much heating as the same amount of smooth DC current.
To reduce current ripple, increase the PWM frequency so that the inductance of the motor windings has a useful effect. 3KHz is high enough for most conventional brushed motors.