Unfortunately bdk::TxBuilder will reuse already used UTXOs, if no sync() call happens in-between.
We might therefore need to track UTXOs used in funding transactions and explicitly forbid reuse via TxBuilder::unspendable. Moreover we'll need to track current sync height and un-lock the UTXOs if they haven't been spent for some time to allow reuse.