First I'd go with a PWM system , However the mosfet failuer mode might be simple. The DC brushed motor puts out a lot of high voltage transients and they increase with the power and current. Sinc eyou have no easy way to stop them you can abosorb them either by using transient suppressors across the motor or sometimes a capacitor and resistor combo. Both of thes eideas will reduce the sparking.. and HV problems. For a check try isolating the motor with a small inductor on each side of the motor as close to the brushes as you can and put a capacitor 10 nF seems about right and also put transorbs ( voltage limiting energy absorbers) across the brushes. If this works and your mosfets are safe then the cooling issue will come up .. if you insist on a linear operation then you will have to use enough mosftes and heat sinks to handle the power. Nice ideas to play with.