Existem muitas maneiras de seguir, dependendo exatamente de como você deseja. Aqui está um esboço de uma maneira que eu acho que se encaixa na sua descrição:
Primeiro gere os canais. Em seguida, comece a colocar as casas aleatoriamente. Para cada casa que você colocar, coloque a estrada na frente dela e desenhe uma estrada daquela peça para a rede viária existente, se isso não for possível, ou colocar a estrada na frente resultará em um feio bloco 2x2 de reposicionar a casa. Detecte alguns pontos da estrada próximos um do outro, mas distantes após as estradas existentes e tente criar alguns atalhos para eles.
Acima de tudo, esse tipo de coisa requer experimentação e experiência. Frequentemente, você obtém bons resultados ao fazer alguns detalhes de maneira aleatória, determina se ele atende a alguns critérios e desfaz e tenta novamente, se não o fizer.
Para esta tarefa exata, você certamente também precisará de uma boa compreensão do caminho básico, a menos que você já seja um especialista, leia o tópico. E lembre-se, a busca de caminhos não precisa ser apenas o caminho mais curto; na última parte da minha descrição, você pode querer dar algum peso à reutilização de caminhos que já estão lá.
Essa não é uma tarefa fácil, se você ficar parado, volte e mostre seu código e algum exemplo de saída e explique em detalhes como você gostaria que fosse diferente.