### 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
* might be set to failed.
     *
     * @param unwrappedException The exception caught
     * @param message error message to log/audit
     * @param unattended whether the transform runs in unattended mode
     * @param numFailureRetries the number of configured retries
     */
    private void retry(Throwable unwrappedException, String message, boolean unattended, int numFailureRetries) {
        
        final boolean repeatedFailure = context.getLastFailure() != null
            && unwrappedException.getClass().equals(context.getLastFailure().getClass());
        final int failureCount = context.incrementAndGetFailureCount(unwrappedException);
        if (unattended == false && numFailureRetries != -1 && failureCount > numFailureRetries) {
            fail(unwrappedException, "task encountered more than " + numFailureRetries + " failures; latest failure: " + message);
            return;
        }
        
        
        
        if (repeatedFailure == false || failureCount % LOG_FAILURE_EVERY == 0 || failureCount == numFailureRetries) {
            String retryMessage = format(
                "Transform encountered an exception: [%s]; Will automatically retry [%d/%d]",
                message,
                failureCount,
                numFailureRetries
            );
            logger.atLevel(unattended ? Level.INFO : Level.WARN)
                .withThrowable(unwrappedException)
                .log("[{}] {}", transformId, retryMessage);
            auditor.audit(unattended ? INFO : WARNING, transformId, retryMessage);