Que tal.
Veo un grave problema de concepto por aqui.
Estas mandando pedir todos los contratos, tengan o no cliente, pero luego filtras aquellos cuya dirección (del cliente) sea similar a
x.
Si no hay cliente, ¿cómo su dirección podría ser similar a algo?
Otro asunto es la versión de sqlserver que estas utilizando, puesto que antes del 2000, si no mal recuerdo, el comportamiento con los filtros y los encuentros externos era erratico, pues el motor filtraría registros que si pasan por el where con que solo se referenciara la tabla externa en dicha clausula.
Lo dejaré hasta alli, pues no he leido toda la consulta, principalmente por no estar publicada con la etiqueta [ sql ], que facilitaría en mucho su rápida comprensión, y porque después de un par de años por aqui, me parece imprescindible que la uses.
Hasta luego.