Fix duplicate BackfillJob execution via atomic lock token
The database queue driver's stalled-job recovery can re-dispatch
long-running backfill jobs while the original is still active, causing
progress to jump erratically. Add a lock_token column to backfill_jobs
and claim it with an atomic CAS UPDATE at the start of execute() — only
one instance wins, the other bails out immediately.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>