A little late... but for anyone who comes across this issue in the future, I found a solution:
Do not use AVAudioPlayerNode with offline manual rendering. I believe this may be the source of the issue.
Instead use "setManualRenderingInputPCMFormat(_:inputBlock:)" with engine.inputNode. The inputBlock will tell you how many frames it wants, and you must return an AudioBufferList. You can obtain an AudioBufferList from an AVAudioPCMBuffer (yourBuffer.audioBufferList).
This is more of a solution for player.scheduleBuffer not player.scheduleFile. If you are currently using player.scheduleFile then you will need to read the file one buffer at a time and feed to the inputBlock.