I take it you don’t want to parent the shapes to the camera (or the null) – this would keep them the same size as you pull back but they would also travel with the camera so they wouldn’t move relative to the camera. (although you could animate them)
In the expressions the only difference should be that a null will have an anchor point and the camera wouldn’t.
You didn’t include any expressions but in things like a=nullLayer.toWorld(nullLayer.anchorPoint); you have to reference the anchor point of the null. But in your original camera code you probably had a=camera.toWorld([0,0,0]); Since cameras (and lights) don’t have anchorpoints you just use their origins.
I imagine using vectors would be the easiest. You could normalize the distance the camera is going to travel (or the distance to the shapes) and then you can use that as a scalar function on the shapes (or at least a multiplier) because that vector would go from zero to one. That way if all the shapes are at different scales or sizes they would all scale the same amount to keep up with the camera’s distance.
I don’t think there is a “width” transform where you could tell the shapes to stay at a constant width relative to the 2D viewport.