### Elasticsearch Version

main

### Installed Plugins

_No response_

### Java Version

_bundled_

### OS Version

MacOS

### Problem Description

Currently, transform state persistence failures are being retried with a constant interval (`60s`).
This is different to how other types of errors are retried (exponential backoff).
We should implement exponential backoff for state persistence failures too.

### Steps to Reproduce

n/a

### Logs (if relevant)

_No response_
x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/transforms/TransformIndexer.java
if (nextChangeCollectorBucketPosition == null) {
            changeCollector.clear();
            return new IterationResult<>(Stream.empty(), null, true);
        }
        
        runState = RunState.APPLY_RESULTS;
        return new IterationResult<>(Stream.empty(), getPosition(), false);
    }
    protected QueryBuilder buildFilterQuery() {
        assert nextCheckpoint != null;
        QueryBuilder queryBuilder = getConfig().getSource().getQueryConfig().getQuery();
        TransformConfig config = getConfig();
        if (this.isContinuous()) {
            BoolQueryBuilder filteredQuery = new BoolQueryBuilder().filter(queryBuilder);
            if (lastCheckpoint != null) {
                filteredQuery.filter(config.getSyncConfig().getRangeQuery(lastCheckpoint, nextCheckpoint));
            } else {
                filteredQuery.filter(config.getSyncConfig().getRangeQuery(nextCheckpoint));
            }
            return filteredQuery;
        }
        return queryBuilder;
    }
    protected Tuple<String, SearchRequest> buildSearchRequest() {
        assert nextCheckpoint != null;
        switch (runState) {
            case APPLY_RESULTS:
                return new Tuple<>("apply_results", buildQueryToUpdateDestinationIndex());
            case IDENTIFY_CHANGES:
                return new Tuple<>("identify_changes", buildQueryToFindChanges());