It appears as though Marlin does soft PWM (at least that's what it looks like in temperature.cpp), and that it is easy to enable HE and HB PID independently. Per your comments about non-trivial hardware usage, it looks like the minimal cpu overhead for an acceptable and universal PWM solution is the way they went.

Quote Originally Posted by printbus View Post
What's needed here is someone already familiar with temperature control options in Marlin. For all I know, PWM control on the heater output is a simple configuration file change.

....