Your first point is already there ;) it‘s called savepoints and works exactly like nested transactions.
SUPER SAVEPOINT A;
<NO HOLDS BARRED CODE USING MULTIPLE CONNECTIONS, TRANSACTIONS, NORMAL SAVEPOINTS ETC>
SUPER RESTORE A;
It could be implemented by playing the WAL logs backwards, I imagine.Alternatively, just making CREATE DATABASE WITH TEMPLATE fast would be nice. Even on tmpfs and no fsync this operation takes about 300 ms on my (fast) workstation. Then you could consider the template database a savepoint in itself.