How are you gathering up the UnprocessedKeys from each batch then? That might be why you're having failures there.

In dynamo-table I just split them up and keep processing until all keys have been returned.