move block hash updates inside chain state transaction, the builder no longer needs to be discarded on an exception