I've never tried this before, but you could try the following:
Add a 100% white surface layer/lambert shader as the final surface shader of your node-network.
Make a separate sun and set elevation to 90.
Disable GI enviro light. Set GI to 0 in the renderer and disable rendering of atmosphere in the renderer.
If you render you should have a white terrain and black sky. This is your mask now.
Create an imagemap-shader and load the mask into it.
The camera projection type is "through camera" as default, leave that as is.
Scaling is also default 1x1.
Use the imagemap as blendshader for your population's density shader (which controls slope/altitude etc.).
I suspect only the parts facing the camera will be populated now.
Secondly, you can also decrease memory-usage by using the "clip to camera" function which makes sure only objects are being populated within the camera frustum.
However, still on all sides of the terrain and it isn't calculating the population's instances faster.