My car's player (reading from a flash drive full of MP3s) doesn't have "shuffle", it has "random". The difference is subtle, but it means that each time it advances to a new track, it selects that at random. The result is that I never hear all the tracks in an album/playlist without hearing a bunch of repeats. Infuriating!
But when I play from my phone or PC, I use PlexAmp (backed by my Plex media server), which is the opposite extreme. Not only does it know what randomly shuffling is, but the server has analyzed the sonic profile of every track, and knows about similar artists and similar albums. So you can play an "artist radio" featuring that artist and other related stuff. And you can choose an auto DJ, which inserts between tracks the closest sonic match to the song it just played, or a brief detour of about 3 tracks that are spaced along the path from the track that just played to the one that's about to play. It's fantastic for discovering stuff you haven't heard in a long time within a very large library.
If you're on Android, I highly recommend trying the app Symphonium. It can connect to your Plex music library and the "Smart Flow" playlist bring all the auto DJ modes from Plex amp and add a few more options. It also looks far better imho.