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
joinValidationService.stop();
                }
            }
            keepGoing.set(false);
            for (final var thread : threads) {
                thread.join();
            }
            assertTrue(validationPermits.tryAcquire(permitCount, 10, TimeUnit.SECONDS));
            assertBusy(() -> assertTrue(joinValidationService.isIdle()));
        } finally {
            Collections.reverse(releasables);
            Releasables.close(releasables);
        }
    }
    public void testJoinValidationRejectsUnreadableClusterState() {
        class BadCustom implements SimpleDiffable<ClusterState.Custom>, ClusterState.Custom {
            @Override
            public Iterator<? extends ToXContent> toXContentChunked(ToXContent.Params params) {
                return Collections.emptyIterator();
            }
            @Override
            public String getWriteableName() {
                return "deliberately-unknown";
            }
            @Override
            public TransportVersion getMinimalSupportedVersion() {
                return TransportVersion.current();
            }
            @Override
            public void writeTo(StreamOutput out) {}