Personally, I would try to make multiple villages in very close proximity. This could lead to the illusion of there being one large village when in actuality it's multiple small ones. I do not think there is a way to change their pathfinding behavior with datapacks.