Organize workers and split the one for join requests in several

Having multiple workers for join requests fixes the issue where the
processing of one join request would fail and block all other notifications
from being sent.
Used this chance to also renamed the workers and the queues used and add
more tests.
Merge remote-tracking branch 'upstream/master'