Computationally, maybe the best method for a sim is not to do a conventional, full shuffle at all, but rather to perform the step that randomizes the next card only at the point when that card is required to be dealt; a sort of 'just in time' approach to shuffling. That way, you do not waste any processing time shuffling cards that are never going to be dealt, and the only overhead involved in reverting to a full shoe is the resetting of a variable or two, meaning that notionally 'shuffling' every round would not be much more expensive than doing so much less frequently.