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
This may _not_ be a semantic version bump. Feel free to pick any other, or I can remove the version change altogether from this PR.