Make setting of job batch metadata atomic.

In prod, we have some batches that have no `data`.
I believe this is because we were using `fill`, which
uses multiple `hsetnx` calls under the covers. This is
not atomic since it uses multiple redis calls. If it
got a timeout after the first one, the job batch would exist
(since the metadata hash would be in redis) but the data
could be nil.

The fix here makes this atomic, using `bulk_set` instead,
which uses `hmset` instead.