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/test/java/org/elasticsearch/transport/TransportServiceHandshakeTests.java
private static ThreadPool threadPool;
    private static final TimeValue timeout = TimeValue.MAX_VALUE;
    @BeforeClass
    public static void startThreadPool() {
        threadPool = new TestThreadPool(TransportServiceHandshakeTests.class.getSimpleName());
    }
    private final List<TransportService> transportServices = new ArrayList<>();
    private TransportService startServices(
        String nodeNameAndId,
        Settings settings,
        TransportVersion transportVersion,
        Version nodeVersion,
        TransportInterceptor transportInterceptor
    ) {
        TcpTransport transport = new Netty4Transport(
            settings,
            transportVersion,
            threadPool,
            new NetworkService(Collections.emptyList()),
            PageCacheRecycler.NON_RECYCLING_INSTANCE,