I think you want "isolation=snapshot" here.  Otherwise, at the default read-committed isolation, two transactions that happen to choose the same key could race during the update.

This also means you'd need to handle `WT_DEADLOCK` returns from the `cursor->update` call in `worker_op` by retrying (or just rolling back) the whole transaction.