Fix some errors in ES

Invalidate was conflicting with the ongoing queue processing and
causing deadlocks. Adding the with_post_event_lock makes sure that we
are not playing with submissions data while we invalidate.

When we check if the submission is busy, we need to check also in the
queue, not only in the worker pool. This avoids random "evaluation
already present" errors from the database.

Also, it's worker.ignore_job, not worker.ignore_operation...