### 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/TransformFailureHandler.java
*/
    boolean handleStatePersistenceFailure(Exception e, SettingsConfig settingsConfig) {
        
        
        int numFailureRetries = getNumFailureRetries(settingsConfig);
        final int failureCount = context.incrementAndGetStatePersistenceFailureCount(e);
        if (numFailureRetries != -1 && failureCount > numFailureRetries) {
            fail(
                e,
                "task encountered more than " + numFailureRetries + " failures updating internal state; latest failure: " + e.getMessage()
            );
            return true;
        }
        return false;
    }
    /**
     * Handle the circuit breaking case: A search consumed too much memory and got aborted.
     * <p>
     * Going out of memory we smoothly reduce the page size which reduces memory consumption.
     * <p>
     * Implementation details: We take the values from the circuit breaker as a hint and reduce
     * either based on the circuitbreaker value or a log-scale value.
     *
     * @param circuitBreakingException CircuitBreakingException thrown
     * @param unattended whether the transform runs in unattended mode
     */
    private void handleCircuitBreakingException(CircuitBreakingException circuitBreakingException, boolean unattended) {
        final int pageSize = context.getPageSize();
        double reducingFactor = Math.min(
            (double) circuitBreakingException.getByteLimit() / circuitBreakingException.getBytesWanted(),