Answer
Query TRANSACTION_SYS_LOCAL_TAB to check for records currently involved in an active or failed transaction — this reflects records that are effectively locked/in-use at the point the query runs. Having the background job's own logic check this table first and skip any record it finds there (rather than attempting and failing against it) lets those records simply get picked up cleanly on the job's next scheduled execution instead of generating a lock conflict against an actively open UI session.