Pure speculation:
If a place does close (I could see a lot of clubs and such being 24 hour in NC), people should leave, bouncers should approach anyone who won't leave, and you could choose to resist or not as that could be your hill to die on if you choose it. Same goes if someone is blocking a door for too long. Even without closing, over time people should come and go. All of these points aren't insurmountable with scripting and such, now where it gets iffy is on is where do they come from or go to.
While it is my dream to one day have a world so fleshed out that every NPC has a "home" even if it's just a quiet spot they just found in an alley. This would then combine with some sort of routine or track that character runs on a daily basis, with enough characters it would have to be algorithmic instead of explicitly set (at least for most), and preferably it would allow for deviations/be fairly dynamic. Sadly, that is a lot to track for current hardware, it MIGHT? be possible on a current gen console. Until you can realize that probably the best situation would be to have them appear outside the building & field of view of the player, and when leaving you could script it to check if the player can see it, if it can it just keeps walking making random turns, until it is outside the player's view then you can release the resources. This way the player never sees a character pop in or out of existence, but you don't need to preserve an entire world when the player has no chance of interacting with it.