Any chance you are working on zombie apocalypse game?)))
Do you use navigation mesh?
To minimize overhead on navigation (i think this is one of the problems) you can try to “merge” AI actors to clusters. Something like boid flock movement. If AI actors close enough to each other - they begin to share navigation. Because 300 actors at the same screen, i think, will look so messy, so this hack will not be noticable. I think, you can even disable or merge collision in clusters.
You can also use animation sharing:
I hope this helps you.)