There's currently a check in `TransportService.HandshakeResponse.isIncompatibleBuild` to stop ES with the same Version but different build hashes from joining a cluster. This needs to be relaxed for cloud deployments where Version is not applicable
server/src/main/java/org/elasticsearch/transport/TransportService.java
return threadPool;
    }
    private boolean isLocalNode(DiscoveryNode discoveryNode) {
        if (discoveryNode == null) {
            throw new NodeNotConnectedException(discoveryNode, "discovery node must not be null");
        }
        return discoveryNode.equals(localNode);
    }
    private static final class DelegatingTransportMessageListener implements TransportMessageListener {
        private final List<TransportMessageListener> listeners = new CopyOnWriteArrayList<>();
        @Override
        public void onRequestReceived(long requestId, String action) {
            for (TransportMessageListener listener : listeners) {
                listener.onRequestReceived(requestId, action);
            }
        }
        @Override
        public void onResponseSent(long requestId, String action, TransportResponse response) {
            for (TransportMessageListener listener : listeners) {
                listener.onResponseSent(requestId, action, response);
            }
        }
        @Override
        public void onResponseSent(long requestId, String action, Exception error) {
            for (TransportMessageListener listener : listeners) {
                listener.onResponseSent(requestId, action, error);
            }
        }
        @Override
        public void onRequestSent(