If you have a shuffled desk, into which you wish to shuffle a batch of new cards (and you know that none of the cards are duplicates), then I think the following is valid.
ForEach card in batch:
gap = random(deck.size() + 1) # choose a gap between cards, before first, or after last.
deck.insertAt(gap,card)
Distribution
The distribution of random is uniform, and the order of the deck is unchanged, so still uniform.
I think the result should be uniform. (My stats is too rusty to be sure).
Time
Assuming that insertAt is O(1) not O(N) - which depends upon the implementeation of deck - the whole routine is O(batch size) - which is the best you can hope for becuase you have to handle each card.