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
@SuppressWarnings("unchecked")
            final RequestHandlerRegistry<TransportRequest> reg = (RequestHandlerRegistry<TransportRequest>) getRequestHandler(action);
            if (reg == null) {
                assert false : action;
                throw new ActionNotFoundTransportException("Action [" + action + "] not found");
            }
            final String executor = reg.getExecutor();
            if (ThreadPool.Names.SAME.equals(executor)) {
                try (var ignored = threadPool.getThreadContext().newTraceContext()) {
                    try {
                        reg.processMessageReceived(request, channel);
                    } catch (Exception e) {
                        handleSendToLocalException(channel, e, action);
                    }
                }
            } else {
                boolean success = false;
                request.incRef();
                try {
                    threadPool.executor(executor).execute(threadPool.getThreadContext().preserveContextWithTracing(new AbstractRunnable() {
                        @Override
                        protected void doRun() throws Exception {
                            reg.processMessageReceived(request, channel);
                        }
                        @Override
                        public boolean isForceExecution() {
                            return reg.isForceExecution();
                        }
                        @Override
                        public void onFailure(Exception e) {