My advice to vetex for making dynamic NPCs that don’t lag would be to look at Majora’s Mask. In that game, NPCs have fixed schedules that allow them to always be in the same place at certain times of the day. That way, even when they load in while walking, they are still right where they need to be. This could allow AO NPCs to be loaded in client-side, meaning it wouldn’t significantly impact server performance. Their movements wouldn’t involve pathfinding either, which would also help. They also wouldn’t be damageable, so they wouldn’t be disrupted unless you talk to them. Even then, if their movements are desynced, that wouldn’t matter since they would be client-side.
My point is that just because NPCs can move around in a big open world, doesn’t mean they have to lag the game. The feature doesn’t have to be removed entirely. The removal of randomness and pathfinding would be a huge help on its own. Given the fact that certain NPCs already can be relocated due to story progression and cutscenes (which I believe are all client-side anyways) proves that it can be done. Everyone doesn’t have to see the same NPCs in the exact same location anyways, but with schedules tied to the day/night cycle, it would be pretty close.