Give them an pack / unpack sequence that forces them to stand still, like the artillery. This allows units to easily catch up to them, such as titans and loyalists.
Or, from another angle: reduce their movement speed if they are trying to fire at a target. That makes sense for a sniper. And it would allow for micro to occur - if you want to run away you can disable their attack.
edit: both these solutions are about two lines of code, so it wouldn't be difficult to implement either