markAsSpent
Mark UTXO as spent (from sync - not local transaction).
State transition: PENDING → SPENT (on transaction SUCCESS). Sets spentByLocalTx=false since this came from sync.
Mark multiple UTXOs as spent (from sync - not local transaction).
More efficient than calling markAsSpent multiple times. State transition: PENDING → SPENT (on transaction SUCCESS). Sets spentByLocalTx=false since this came from sync.