Previously, the PaySui logic is as following
1. get the last address in the keystore(assume it has sufficient coins)
2. split the first coin into `num_threads` coins and assign one
dedicated coin to each thread
3. That thread will use the assigned coin for all transactions
The problem is that after the second step, the address ends up with a
lot of coins with small balances that make it hard to select coins to
split if we need to run the script again. This PR adds an additional
step between 1 and 2 to send coins to a burner address and uses the
burner address for step 2 and 3.
We are able to get around ~60 write tps with this approach on local Mac
book. The next PR will try to improve this number by further splitting
the coins on each thread and each thread will run multiple paysui
transactions concurrently. Another lever we have is to use
`ExecuteTransactionRequestType::WaitForEffectsCert` instead of the
current `ExecuteTransactionRequestType::WaitForLocalExecution`