Request for "more sophisticated" shuffle algorithm

Many of my playlists have multiple tracks from the same artist and even album. It would be nice if the shuffle were not truly randomized, but instead tried to separate songs from the same source or with the same name. For example, if I have an Xmas playlist that includes the holiday album from Chris Isaak along with many other tracks, I’d prefer not to hear two (or more) Chris songs in a row if there are other choices in the queue. Similarly, there might be three versions of “Sleigh Ride” by different artists, would be better if they were never placed in sequence by luck.