Basically I want to move all selected objects away from the 3D cursor equally, the same way they would move if I scaled them, except i want them to not actually change size at all.
Ensure the objects are selected, and nothing else.
Set the pivot center for scale to '3D Cursor'.
Hit S to scale, then use the mouse or keyboard to scale all the objects to your chosen scale, e.g. 3.0
The objects will move away from the 3D Cursor, and get larger.
Keeping the objects selected, switch the pivot center to 'Individual Origins'
Once again, hit S to scale, then use the mouse or keyboard to scale all the objects to the reciprocal of your chosen scale, e.g. 0.33333 (1 divided by 3.0)
The following ugly hack will totally work:
Create an empty for each object, and give each object a copy location constraint to follow that empty. Then parent all the empties to another empty and scale it. It makes a mockery of the dependency graph and wastes a lot of time though.
I don't think blender "knows" how to apply scale to just the locations of objects, but if there's another way it probably involves messing with the object data through python...