checking for artist would be pertinent, too, for the reasons you said. I had considered that, but had left it out either because I forgot or to be brief. The checks it does could be tweaked a bit to get the best of all cases, after the core functionality is established.
Regarding the justification for this feature: I have a tendency to listen to big randomized playlists, either a large playlist created then set to shuffle mode, or not in shuffle mode but created using the "insert shuffled" feature (or simply doing a "shuffle list" after constructing a playlist). When listening in this vein, I want every track transition to be crossfaded -- but occasionally I feel like interjecting a whole album into my playlist. At the moment, the only way to have such an insertion played without crossfading would be to manually go in and disable crossfade, and remember to reenable it when the album ends. Perhaps one could simply turn "shuffle mode" off, but what effect would that have on an otherwise-random playlist? (perhaps I should try, i guess).
Also occasionally while listening in shuffle, one song will start which I know transitions smoothely into another, and I'll manually insert that song after the current one. It's kindof a corner case, but another example nonetheless.
This is one that perhaps would be just obscure enough that I'd keep it as a patch for personal use -- though as I see it, it would really add no complexity to code, nor to the crossfade routine itself (it would simply do a binary check based on the aforementioned criteria, and if it matches, disable crossfade for the current transition). In any case, It would be useful to me and it would at least be neat to see if I could get it working, and if I did it well enough it may even be considered for addition to the project. For now I'm just trying to satisfy my curiosity as to what I need to do the checking, just code-wise.