### Description

`SearchResponse.Clusters` currently uses a `HashMap<String, AtomicReference>` for storing Cluster objects. The AtomicReference CAS swaps are done in a do/while loop in most cases (e.g., in `CCSSingleCoordinatorSearchProgressListener`).

This can be replaced with a `ConcurrentHashMap` in conjunction with either `compute()` method or the `replace(key, assumed_previous_value, value)` method for atomically swapping in a new Cluster object with a CAS operation, assuring that the updates don't lose data from competing threads doing separate Cluster object updates.

See: https://github.com/elastic/elasticsearch/pull/98457/files#r1310467586 
server/src/main/java/org/elasticsearch/action/search/SearchResponse.java
int skippedTemp = in.readVInt();
            if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_500_053)) {
                List<Cluster> clusterList = in.readCollectionAsList(Cluster::new);
                if (clusterList.isEmpty()) {
                    this.clusterInfo = Collections.emptyMap();
                    this.successful = successfulTemp;
                    this.skipped = skippedTemp;
                } else {
                    Map<String, AtomicReference<Cluster>> m = new HashMap<>();
                    clusterList.forEach(c -> m.put(c.getClusterAlias(), new AtomicReference<>(c)));
                    this.clusterInfo = Collections.unmodifiableMap(m);
                    this.successful = getClusterStateCount(Cluster.Status.SUCCESSFUL);
                    this.skipped = getClusterStateCount(Cluster.Status.SKIPPED);
                }
            } else {
                this.successful = successfulTemp;
                this.skipped = skippedTemp;
                this.clusterInfo = Collections.emptyMap();
            }
            int running = getClusterStateCount(Cluster.Status.RUNNING);
            int partial = getClusterStateCount(Cluster.Status.PARTIAL);
            int failed = getClusterStateCount(Cluster.Status.FAILED);
            this.ccsMinimizeRoundtrips = false;
            assert total >= 0 : "total is negative: " + total;
            assert total == successful + skipped + running + partial + failed
                : "successful + skipped + running + partial + failed is not equal to total. total: "
                    + total
                    + " successful: "
                    + successful
                    + " skipped: "