i've been trying to build an app that can do that, off and on, for quite a while.
The current state of SubFire 5 has some support for that sort of thing. Create a playlist, go to
https://subfiresuite.com/demo5/#/playlists (after logging in, of course), and then in the right side menu button next to playlists type click "Radio Mode".
From there, it basically treats that playlist as if it was started at the time that it was created, so it will count the number of songs and seconds since that created date and start up in the middle of wherever that ends up.
The 'demo5' app is kind of my workspace for experimenting with ideas since moving to a new architecture, but yeah, it 'works for me' but isn't terribly well documented.
I'm having new ideas gelling in my head about how to have things be more interactive, one person being a 'dj' others can listen to, along with new player apps designed just for this type of 'radio' approach (to be done in react-native along with tv or android auto/apple carplay support), but it'll be a few weeks to months before any of this is ready. the day job is kinda more important right now.
https://subfiresuite.com/pl is a playlist editor you can try. It also has a dynamic playlist feature - flip the switch to 'radio' at the top and you can create stations that are kind of like smart (shuffling) playlists, able to regenerate them on demand in this app. the filters aren't as powerful as, say, iTunes, but it can be something depending on the organization of your files.