What about splitting the scene up into squares based on the largest size of the 'house' you plan on placing?
let's say it's 1024x1024 px grid. largest house size is 32px, so that means you will have split your grid up into 32 rows, 32 columns.
Now pick 2 random numbers 0-32 called A and B. Then place this 'house' at x=A*32
and y=B*32
, rinse repeat
As long as you ensure that the random 2 numbers have not been picked yet. they wont overlap. Simply keep an array of your chosen random numbers, make a function that loops through and ensures that the passed A/B, X/Y does not already exist.
Depending on the size of your 'house' sprites you can then add some more randomness... Say the largest house is 32x32.. make your grid that you split up into be 64x64... that means you have 16x16 columns, now when you do your x=randomA*64
and y=randomB*64
you can add another random number between 0-32 to the x and y so that you now position the 32x32 within the 64x64 Heck even add in rotation if that is something you see as being feasible.