I've created many dozens of waypoints in single player, no noticeable lag. I generally do it when a player enters an area for the first time. I'd expect it to be very quick, because a waypoint in game is a tiny amount of data (lag generally results from graphics and/or model loading). In any case, processing during module or area load isn't going to be perceived by the player. All the same, as a rule of thumb, it's good to create stuff only when you need it, and remove it afterwards.
If I've understood what you're trying to do, while the player is elsewhere, you keep track of where the NPCs ought to be (according to some predetermined plan of activity) and spawn them when the PC enters an area.
That's definitely the way to go. For example, I once made a pilgrim system, in which pilgrims walked from one end of the module to the other, while citizens milled around in their local areas. That did start to lag, owing to the unnecessary AI activity in areas the PC couldn't even see. Also, unless I set the AI level artificially high, the NPCs would go dormant or move slowly when the PC wasn't around.
There is some overhead to spawning a creature, so, in the toolset, you might want to put them all in a holding area that the PC can't visit. In game, jump them to the correct location when the PC enters the area, then clear all actions when the PC leaves.