## Description
This fixes a couple issues that cropped up when replaying more
transactions with tracing. In particular:
* We weren't properly tracking aliasing of references
* We were indexing in one place from the bottom of the stack instead off
of the top of the stack when looking for a stack value.
* We were recording the store of a value before the taking the snapshot
of the initial value.
## Test plan
Ran it on a bunch of transactions to verify it.
---
## Release notes
Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.
For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.
- [ ] Protocol:
- [ ] Nodes (Validators and Full nodes):
- [ ] gRPC:
- [ ] JSON-RPC:
- [ ] GraphQL:
- [ ] CLI:
- [ ] Rust SDK: