Why we cannot add code to filter non-core nodes from connecting to core nodes? Classic would have to update their code to look like a core node and by doing so classic nodes will not be detectable. It could be based on UA, version or protocol level, or set of other fields. Nodes can be configured to accept connections above a certain set and refuse everything else.
The classic will try to piggyback on your releases. So force them to adopt your code and they become invisible on the network.
Yeah! Lets go even further! Let's make bitcoin a closed-source project! Think about that, no more 'hostile takeovers' and threats to the 'consensus'.