I don't think that it would be possible to do everything in one transaction. I have to import a layout from a template. That layout has to be in the database in order to get one of its viewports. I insert a block and then edit its dynamic properties and attributes. The block has to be in the database. There are just so many steps that require the transaction to be committed before the next step is valid.
None of the operations you describe have any dependence on
a transaction encapsulating previous operations being committed.
Objects become database-resident before transactions are committed,
they are resident as soon as you call the API that adds them to their
owner and returns their ObjectId.
In case you didn't know it, a Transaction is merely a wrapper around
the UNDO/Begin and UNDO/End commands. The only reason why one
would need to use multiple transactions, is if they wanted to be able
to abort some operations without also aborting previous operations.