If I understand your question correctly I just came across a similiar situation in a test project I'm working on.
I just added a custom meta field active and none active as a checkbox.
When I get my posts on the pages I filter on this meta field aswell.
So on the live website I only show published posts who also have the custom checkbox active.
If not I don't show them.
But in the backoffice all those posts are threated as live posts.
Would this approuch be what you are looking for?
If wanted I can provide some code examples, although this should be quite clear.
-- for trash you can do this.
There is a constant named EMPTY_TRASH_DAYS
you could Set EMPTY_TRASH_DAYS to a very high number.
define( 'EMPTY_TRASH_DAYS', 1000000 );
btw this goes in your wp-config.php
I found this also here
https://wordpress.stackexchange.com/a/7761/17541
seems like you can remove the shedule action.
function my_remove_schedule_delete() {
remove_action( 'wp_scheduled_delete', 'wp_scheduled_delete' );
}
add_action( 'init', 'my_remove_schedule_delete' );