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
}
    public final <T extends TransportResponse> void sendRequest(
        final DiscoveryNode node,
        final String action,
        final TransportRequest request,
        final TransportRequestOptions options,
        TransportResponseHandler<T> handler
    ) {
        final Transport.Connection connection;
        try {
            connection = getConnection(node);
        } catch (TransportException transportException) {
            
            assert transportException instanceof NodeNotConnectedException : transportException;
            handleSendRequestException(handler, transportException);
            return;
        } catch (Exception exception) {
            
            assert false : exception;
            handleSendRequestException(handler, new SendRequestTransportException(node, action, exception));
            return;
        }
        sendRequest(connection, action, request, options, handler);
    }
    /**
     * Unwraps and returns the actual underlying connection of the given connection.
     */
    public static Transport.Connection unwrapConnection(Transport.Connection connection) {
        Transport.Connection unwrapped = connection;
        while (unwrapped instanceof RemoteConnectionManager.ProxyConnection proxyConnection) {