I created a separate tilemap that is hidden from view where I manually placed tiles around the map, then when the level starts it reads that hidden tilemap to get all possible positions, then randomly picks 21 of those locations. I found that if placement was completely random the NPCs would sometimes clump together or be too far apart