If you create a grid of weights, you can have each person's AI be fairly simple and go towards the lowest weighted location nearby.
I kind of imagine this as representations of gravity, but instead of making pits and attracting, they're forming mountains and repelling. They're all smelly and want to move away from each other.
Since we want the player to have plenty of space and override pretty much everything else, they can have ridiculously large values to ensure the AI people move away.
When calculating where each person should move, they should ignore their own aura they're adding to the grid (probably by subtracting their values or something).
This should work well and not be too noticeable it's a grid if you make the grid small enough.