If I were to add a rotational speed sensor to create a closed loop system would it be possible to improve the speed control at the low end
Of course, and significantly so.
or am I fighting a losing battle due to the fundamental properties of universal motors and the limitations of triac and resistor control? Would using a variac make a difference?
You likely get a big improvement even with crappy triac controls, but if you want to do even better, you would rectify (and smooth with capacitors) the supply, because as the name suggests, universal motors work with DC. This removes the 100/120Hz torque ripple component. You can then buy or design an actual DC motor controller, which consists of a pulse width modulator running at say >10kHz, high bandwidth current sense for instantaneous motor current, and well tuned very quick feedback loop (hysteretic or PI loop) so that motor torque is always well constrained and under control. Then the speed controller will just control the current setpoint, and the loops work in cascade.
Getting the speed control loop right for very slow speeds may be challenging, though. Having enough resolution in the encoder is a must, because if you get a pulse (position update) only every 100 milliseconds, it's hard to not make the loop oscillate. Combination of P, I, D and feedforward terms help.