I'm making it kind of a mixture. I don't plan to have weapon-to-limb collision or anything like that, partially because single combat isn't really the focus of the game, and also because I'm doing all the collision agnostic from whatever animations are happening on screen. All the movement and everything is handled with a very small amount of per-agent data and relatively simple functions, and the models only spawn in when characters are on screen.
I've done some tests of my own and the code itself isn't anywhere close to being the bottleneck. I can have tens of thousands of agents moving at once without performance being a problem. The real issue is the skeletal meshes which are fairly inefficient in unreal engine, and I spent a good deal of time trying to figure out how to merge meshes and also have morph targets (for different body shapes), but I encountered so many problems that I don't think it's possible (the feature itself is advertised on the Unreal Engine website but the code they provide is completely bugged).
However I haven't even thought about doing an optimisation pass yet. I can currently have about 1000 agents on screen without any performance issues. I plan to replace distant agents with static impostors like in total war.