You need indexes to support these lookups.
You'll need the following indexes:
The only other issue now is that that the planner seems to want to do a label scan instead of an index seek to find
d. We can provide an index hint for lookup, which will nudge the planner, and it will also utilize the other index without us having to explicitly specify both.
After you've created your indexes, do an EXPLAIN on this query to verify that only index seeks are used (and not label scans), then give the actual query a try.
with c, c.address as address, c.employer as employer
optional match (d:client)
using index d:client(address)
where (d.address = address or d.employer = employer) and c<>d and d.status ='WRITE_OFF'
return count(distinct d)