first, you can always do something like that: index=notable | stats count by src as ip_count | rename src as ip which will perform much better.
but now for your join question.
there are couple (or more) ways to achieve, but the overall idea is to first bring all the results to one place with a wider search, and then slice and dice as you wish. for example:
(index=notable src=*) OR (index="abcd" "tags.Dev:"cluster1 OR index="abcd" "tags.Dev:"=cluster2)
| eval normalized_ip = coalesce(ip,src)
| stats dc(index) as unique_indexes by normalized_ip
| where unique_indexes > 1
play around with the data after you capture all of it, and suite yourself with the approach you like. there are many ways to go about this one...