Description
#### Problem
When collecting balances before and after execution in BankingStage, the balances for transactions within a TransactionBatch that didn't execute still get collected even though the state didn't change.
There is likely a slight performance hit for doing this, especially with batches that contain many transactions that failed to lock.
#### Proposed Solution
When collecting pre-balances, check the lock results and only collect pre-balances for transactions that lock successfully. When collecting post-balances, check the execution results and only collect post-balances for transactions that executed.