I may have a tip to speed up Blender a bit.
Give Blender some options to cash disk data into memory.
While running procmon.exe (a free windows tool from sysinternals), i got surprised.
I noticed that every texture or ocean bake (possible other bakes too) is read from disk again for every frame.
Although i use CPU render, memory is faster then disk access, if possible try to use it.
If i had a GPU then one could upload a texture to the GPU once, probably you already do that i think…
For the final output, it might be an idea to build the png file in memory and have only a single (first available) threat write it to disk. As in general Disk IO is the slowest IO, so try to minimize its use. (i saw 70 threats writing to a single render result png file)