Reusing npcs is a pretty significant design challenge because you always have to take into account that at any time, for any reason, the player could kill either purposely or accidentally any npc. It makes it very hard for the player to gauge the consequences of their actions when one person getting snubbed out could ruin not just one but numerous quests. Imagine if one of the npcs in the middle of the starting "town" in DOS2 got caught up in one of the many skirmishes that happens there and that death caused a lengthy quest line to vanish. This is also a problem for the designers themselves as they have a vested interest in you experiencing most of the content they create. IMO, it is better to have a few interconnected npcs that are made clear to the player from the get go. (no spoilers but in both games right off the bat we meet characters that seem to be obviously intended as reoccurring)
It also just wouldn't make a whole lot of sense in most cases for npcs to be moving from town to town. Imagine if Esmeralda, as the OP brought up, suddenly popped up in a later area. They would literally have to come up with some wacko excuse for why she was there and not back in the town in which I personally am less okay with than just accepting that a lot of npcs will not be terribly useful after you have finished your business with them. The alternative is to have the npcs stay in the same place but having new quests or interactions available which is probably the worst option since it creates backtracking issues that would need to be designed around. (ex: some sort of immersion breaking notification system for when people randomly decide they are important to you again)
TLDR: Could it be done right? Yeah. Is it worth the extra design considerations and potentially game-breaking problems it introduces? Probably not.