optionally choose what worker to send tasks to

There also needs to be a way to avoid assigning work for different datasources to workers that have a preference. For the updating-worker use case we want to be able to say "everything for X goes to this worker, and things that are not X do not go to this worker". In case something is wrong with the updated worker that will limit the damage.

I think that behavior isn't really intuitive if it's called a "preference" so perhaps it should instead be called "isolation"?