Вы не можете предварительно загружать фоновую музыку асинхронно, используя функции SimpleAudioEngine.Однако опубликованное вами решение будет работать, поскольку данные SimpleAudioEngine сохраняются между сценами cocos2d.
Если вы действительно хотите, чтобы они были асинхронными, вы можете сделать это в отдельном потоке или в операции NSOperation. В этой теме на форумах cocos2d есть несколько предложений.