It sounds like you have top-level objects animated, or un-nested layer objects. In either case, make a group right under the parent, or the layer object, zero it out, take back outside the hierarchy and nest the group or layer you just zeroed to under that. Then you can create a new default group, and nest all of those underneath it, and everything will stay put.
You said -
Also, having to do it this way means building every single object this way that doesn't have its own explicit in/out animation - that's not true, unless I am missing exactly what you mean by this, but if you follow the steps above, that one main group object will fade the entire element out, regardless of what else may or may not be going on with the child objects.
Alternatively, you could keyframe an alpha ramp for one object, and then link the alpha properties to the other 'parents' with visual logic. This way, you're still working with a single set of keys, and if you put it on its own animation controller, it will be easier to re-time if you need to finesse.
A third option would be to bring back the 'reverse' out move by setting the pause event to play in reverse upon a continue, but have it do so at 2x speed (or faster if needed), as this might mitigate the original issue you had with it
#XPression