!str #16069 disallows using one Keyed sink/source ambiguously (many times)

This can / should wait for Patrik's move-all-the-things PR.
Refs #16069 
ah, that was the piece that I had forgot

I still feel that I'm missing something. BlackholeSink is an `object`. It should be possible to have several of these in same graph.

Wasn't this check only about keyed source/sink?

Would it be possible to adjust hashCode and equals of `SourceVertex` to something like

    final override def equals(other: Any): Boolean = other match {
      case s: SourceVertex => s.source match {
        case k: KeyedSource => source == k
        case _ => super.equals(other)
      }
      case _ => false
    }