This is what I would do: I would run a local fork of mainnet using hardhat node provider_url and do the transaction there, while capturing the events and reading the state changes that resulted afterwards.
Did you try using eth_getLogs. This is also exposed via the Ethers provider: https://docs.ethers.io/v5/api/providers/provider/#Provider-getLogs.
The syntax for the parameter is the same as for eth_newFilter.
This happens because eth_getTransactionCount returns the nonce of mined transactions but not the pending ones. So in your case, under heavy load, there will be some transactions that are still pending but not counted by calling eth_getTransactionCount.
I've been looking for a solution for this problem but I haven't found an official one. However, you can ...