Use claim to get messages from queue

Rebase and change Channel._get to use claims instead of getting messages to fix race conditions