Numerous fixes

* chunks can't be chained, use .group() first
* a couple of places hadn't changed "id" "pk"
* skew chunked tasks to avoid flooding workers
* return early if there's nothing to delete in a batch