Could you submit a bug report — ideally with a small sample project that demonstrates the problem — and post the bug number here? That would be a big help in trying to get this narrowed down.
I have the same issue with setting shuffleMode, also with setting repeatMode.
The iOS Music app and MPMusicPlayerController seem to share state under the hood. I've discoverd that the UI freeze/delay is repeatable by: [open the Music app, play a song (briefly), stop play, exit the Music app, kill the music app]. This seems to reset the state of the shared player to an uninitialized state. If you now attempt to set shuffleMode or repeatMode in your app you get a UI freeze while the shared player initializes.
OTOH, if you [open the Music app, play a song, stop play], this seems to initialize the state of the shared player so you get no UI freeze when you set repeat or shuffle mode from your app.
Unfortunately, I haven't yet come up with a workaround based on this undeerstanding...
I was checking the shuffle mode on a background thread, then setting it to the inverse on the main thread, and I was seeing the problem you've described.
I removed the async closures and the error and freezing have gone away.