https://github.com/elastic/elasticsearch/pull/97304 removes several places that might do an expensive rebuild of the cluster state via `getStateForMasterService`. There's one other call we should be able to remove, in `JoinValidationService`, but it's a little tricky since we rely on seeing the last-accepted state for the cluster UUID validation, and it's not obviously ok to expose the last-accepted state without the no-master block.

This is a fairly minor issue because we do not do this join validation during elections, only if we're the elected master, and in that case `getStateForMasterService` is cheap. But that's not guaranteed, and we should strengthen this to avoid the that expensive step whenever possible.
server/src/test/java/org/elasticsearch/cluster/coordination/JoinValidationServiceTests.java
@Override
                                    public void onResponse(TransportResponse.Empty empty) {
                                        validationPermits.release();
                                    }
                                    @Override
                                    public void onFailure(Exception e) {
                                        validationPermits.release();
                                        assert expectFailures.get() : e;
                                    }
                                })
                            );
                        }
                    }
                }, "join-validating-thread-" + i);
                threads[i].start();
            }
            startBarrier.await(10, TimeUnit.SECONDS);
            assertTrue(sendCountdown.await(10, TimeUnit.SECONDS));
            expectFailures.set(true);
            switch (between(1, 3)) {
                case 1 -> joinValidationService.stop();
                case 2 -> {
                    joinValidationService.stop();
                    transportService.close();
                    ThreadPool.terminate(threadPool, 10, TimeUnit.SECONDS);
                }
                case 3 -> {
                    transportService.close();
                    keepGoing.set(false); 
                    ThreadPool.terminate(threadPool, 10, TimeUnit.SECONDS);