I don't think making more object types subtypes of content revision is going to be the best solution here. "Expired" does not mean deleted and I don't think you should change that. In reality there are no built in semantics for what the publish status means. Another issue with Cr_items is NAME since you can't have duplicate names, if you mark something deleted you can't have another object with the same name. If you move the items to a "deleted items" folder you can't delete more than one item with the same name, so using the CR isn't solving your problem, its actually making it more complex.
I think to break this down and get back to basics there are two solutions
1) Application specific code to "inactivate" objects.
2) Generic acs_object code to inactivate objects.
Of course choosing #2 does not stop applications from extending the generic feature for a specific application.
So the question is, do we want to add a column to acs_objects or otherwise extend acs_objects.