It is no harder than doing it with an ECU, except that you need to install a servo or speed governor with hand tools, instead of fiddling with ECU code.
These governors are basically mechanical analog computers which use the inertia of flyweights, springs, and some very clever linkages to do their thing.
And it's a bit easier to make 3rd party addons when you just have some open bus standard, not "mount that servo on a gas pedal"
Also note that maintaining a particular AFR in a diesel is kind of a non goal, at least from the perspective of engine performance. With the older style, simple injection systems that are user serviceable you only get one pulse per cycle. So you can't really change AFR without compromising torque output. For a tractor, when I set the lever all the way forward I (the operator) expect it to maintain revs sufficient to maintain 540rpm at the PTO unless it is not able to do so (fueling maxed out under load). Putting more load necessarily means more fuel in for a given RPM, ergo higher AFR. Note that turbocharging changes this equation a little.