Well, colour me an embarrassed shade of mauve - after lots of faffing about with llSetTorque et cie, I find that llRotLookAt does work with physical objects, it's just that you need rather inflated parameters to get it to do anything.
If we declare
float strength;
float damping;
at the top of the script, and set those variables to be
strength = llGetMass()*3;
damping = strength/3;
in state_entry(), things work out quite well if we just add the instruction to rotate to set_engine, which now look