I once (c. 2010) built a terribly architected, horribly inefficent solution to create playlists which smoothly transition between extremely different artists.
Here's what it did when I asked it to go from Cradle of Filth to Regis Philbin. It took a long and winding road, but we got there!
I later tweaked some of the logic, and tried less extreme endpoints, and got slightly more reasonable results.