Random local shuffle is done. In Multiplayer for alpha I have the first player generate the shuffle moves and send them to the opponent when they join. Longer term I will implement a server generated shuffle and verification web service to guard against attacks. Even so, in offline scenarios people will need shuffle, so this code will stay for that in the long term.
One interesting intermittent side effect of the networking events / solution is the shuffle events for a past game can arrive as the new game starts. So each shuffle move is tagged with gameID (GUID) and discarded if it doesn't match, fixed it right up.
Next, implementing the UI controls and some refactoring to get alpha ready, not long now.