Process a block within a single transaction
This increases performance by a factor of 4-10 (depending on the block and disk performance), as Postgres only have to do a single commit instead of committing on every INSERT.
At the moment we can't guarantee that every INSERT generated from a block is valid, so within the transaction we create a SAVEPOINT after every operation and roll back to the last savepoint if an operation fails. This way we don't have to abort the whole transaction.