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/main/java/org/elasticsearch/cluster/coordination/Coordinator.java
);
                    return;
                }
                if (currentPublication.isPresent()) {
                    assert false : "[" + currentPublication.get() + "] in progress, cannot start new publication";
                    logger.warn(
                        () -> format(
                            "[%s] failed publication as already publication in progress",
                            clusterStatePublicationEvent.getSummary()
                        )
                    );
                    publishListener.onFailure(
                        new FailedToCommitClusterStateException("publication " + currentPublication.get() + " already in progress")
                    );
                    return;
                }
                assert assertPreviousStateConsistency(clusterStatePublicationEvent);
                final ClusterState clusterState = clusterStatePublicationEvent.getNewState();
                assert getLocalNode().equals(clusterState.getNodes().get(getLocalNode().getId()))
                    : getLocalNode() + " should be in published " + clusterState;
                final long publicationContextConstructionStartMillis = transportService.getThreadPool().rawRelativeTimeInMillis();
                final PublicationTransportHandler.PublicationContext publicationContext = publicationHandler.newPublicationContext(
                    clusterStatePublicationEvent
                );
                try {
                    clusterStatePublicationEvent.setPublicationContextConstructionElapsedMillis(
                        transportService.getThreadPool().rawRelativeTimeInMillis() - publicationContextConstructionStartMillis
                    );
                    final PublishRequest publishRequest = coordinationState.get().handleClientValue(clusterState);
                    final CoordinatorPublication publication = new CoordinatorPublication(