What you are describing seems to be doable even with animation (keyframing the changes) and batch render, for different cameras.
But for a more comprehensive approach, I am yet to find a more comfortable (and reliable) way of doing this than the native (while not user friendly) scene states.
I believe all render managers use it or its functionality to do the versioning tricks.
The important thing is the scene states are supported by batch render, and render presets (settings) as well.