Given a reference to both an instance of a player and a reference to a deck object, it should be possible with just a single function to have that player draw from the deck. Either deck:draw(player, number_of_cards) or player:draw(deck, number_of_cards) and maybe an optional is_faceup argument.
https://api.tabletopsimulator.com/object/#deal deck.deal(number, player_color, index) does this already, or am I misunderstanding the suggestion?