Hashed Storage: Prevent a migration and rollback running at the same time

This is a followup from https://gitlab.com/gitlab-org/gitlab-ce/issues/53966.

When scheduling a migration or a rollback we should verify and abort if the opposite operation is already scheduled.

This is a polishing to prevent unexpected outcomes from accidentally running one while the other is still going on.