So as far as smartblock stuff goes I did a bit of work on this in the past.
Here is a wiki page where I tried to layout some ideas about smartblocks - https://github.com/LibreTime/libretime/wiki/Smart-Block-development
Here is a PR that touched upon a bit of the Smartblock files to keep them from overflowing the time limit - https://github.com/LibreTime/libretime/pull/605/files
And I suspect that airtime_mvc/application/models/Block.php would be the place to dig in.
The issue is that I don’t really think the current database queries are designed in such a way that they factor in any details of the track order. So I suspect you would need to write a function that takes the files returned generateSmartBlock by getListOfFilesUnderLimit and then scan through them and add a conditional check that would only happen if the no repeating artists (or however it was set) was enabled and then before it adds the clip it would try to find another one. It’s not a simple problem to solve because of the way this is setup but it also isn’t super complicated to imagine some solutions.
I hope this is helpful in giving you some ideas.