### 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
default:
                
                logger.warn("Encountered unexpected run state [" + runState + "]");
                throw new IllegalStateException("Transform indexer job encountered an illegal state [" + runState + "]");
        }
    }
    private SearchRequest buildQueryToFindChanges() {
        assert isContinuous();
        TransformIndexerPosition position = getPosition();
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder().runtimeMappings(getConfig().getSource().getRuntimeMappings());
        
        SearchRequest request = new SearchRequest(
            /*
             * gh#77329 optimization turned off, gh#81252 transform can fail if an index gets deleted during searches
             *
             * Until proper checkpoint searches (seq_id per shard) are possible, we have to query
             *  - all indices
             *  - resolve indices at search
             *
             * TransformCheckpoint.getChangedIndices(TransformCheckpoint.EMPTY, getNextCheckpoint()).toArray(new String[0])
             */
            getConfig().getSource().getIndex()
        );
        request.allowPartialSearchResults(false) 
            .indicesOptions(IndicesOptions.LENIENT_EXPAND_OPEN); 
        changeCollector.buildChangesQuery(sourceBuilder, position != null ? position.getBucketsPosition() : null, context.getPageSize());
        QueryBuilder queryBuilder = getConfig().getSource().getQueryConfig().getQuery();
        TransformConfig config = getConfig();
        BoolQueryBuilder filteredQuery = new BoolQueryBuilder().filter(queryBuilder)
            .filter(config.getSyncConfig().getRangeQuery(lastCheckpoint, nextCheckpoint));