Refactor `AbstractSimpleTransportTestCase` and `MockTransportService` to not use `Version.transportVersion` 
test/framework/src/main/java/org/elasticsearch/transport/AbstractSimpleTransportTestCase.java
randomFrom(ThreadPool.Names.SAME, ThreadPool.Names.GENERIC),
            TestRequest::new,
            (request, message, task) -> { throw new AssertionError("boom"); }
        );
        expectThrows(
            IllegalArgumentException.class,
            () -> serviceB.registerRequestHandler(
                "internal:action1",
                randomFrom(ThreadPool.Names.SAME, ThreadPool.Names.GENERIC),
                TestRequest::new,
                (request, message, task) -> { throw new AssertionError("boom"); }
            )
        );
        serviceA.registerRequestHandler(
            "internal:action1",
            randomFrom(ThreadPool.Names.SAME, ThreadPool.Names.GENERIC),
            TestRequest::new,
            (request, message, task) -> { throw new AssertionError("boom"); }
        );
    }
    public void testHandshakeWithIncompatVersion() {
        assumeTrue("only tcp transport has a handshake method", serviceA.getOriginalTransport() instanceof TcpTransport);
        Version version = Version.fromString("2.0.0");
        try (MockTransportService service = buildService("TS_C", version, Settings.EMPTY)) {
            TransportAddress address = service.boundAddress().publishAddress();
            DiscoveryNode node = new DiscoveryNode("TS_TPC", "TS_TPC", address, emptyMap(), emptySet(), version0);
            ConnectionProfile.Builder builder = new ConnectionProfile.Builder();
            builder.addConnections(
                1,
                TransportRequestOptions.Type.BULK,