At a practical level, @Fred's suggestions would possibly work. But strictly speaking, there are problems with that approach. If you are using finite population (design based) methods of inference, then it is important that the probability that any two individuals both appear in the sample be greater than 0. But if Bob from Little Whingeing is in the sample, then Joe from Greater Whingeing, 1 km away, is excluded. There is 0 probability that we get both Bob and Joe. @Fred's option 2 doesn't get around this. Option 1 redefines the population, so your inference is no longer about the real world population you have. You will end up culling a lot of villages in high density areas, while less populated areas have all their villages remaining in the frame.
You didn't mention how many villages you are going to select, but if it is a small number, you could try a matched-pairs design. Explicitly select representative pairs of similar villages, and randomize intervention and control to the pair. You would analyse the results as a randomized block design, in which each pair would be a block. If all you care about is the comparison between case and control, it's OK to turn the villages into fixed, block effects.
I don't know what kind of geography you have, but perhaps you could combine nearby villages and apply the intervention to the whole group. If they are so close that they function as a unit, perhaps they should be randomized as a unit. This also redefines the frame, but everyone is still included, and you don't have the Bob/Joe problem. This assumes that you have clusters of villages, then green space, then another cluster. If it's just villages everywhere, this won't work.
Modelling the spillover, Fred's option 3, sounds interesting, although challenging.