Update dependency to dj ~> 4.0

Refactor query conditionals into clearer "scopes"
Adjust scopes slightly to better match logic in DJv4
Changes in scopes seem to fix edge cases broken by me previously

Trigger a record reload after we perform lock_exclusively