### 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
new RuntimeException(
                    "Timed out (" + PERSIST_STOP_AT_CHECKPOINT_TIMEOUT_SEC + "s) waiting for transform state to be stored.",
                    e
                )
            );
        } catch (Exception e) {
            logger.error(() -> "[" + getJobId() + "] failed to persist transform state.", e);
            shouldStopAtCheckpointListener.onFailure(e);
        }
    }
    private boolean addSetStopAtCheckpointListener(boolean shouldStopAtCheckpoint, ActionListener<Void> shouldStopAtCheckpointListener)
        throws InterruptedException {
        synchronized (context) {
            
            if (indexerThreadShuttingDown) {
                context.setShouldStopAtCheckpoint(shouldStopAtCheckpoint);
                saveStateRequestedDuringIndexerThreadShutdown = true;
                return false;
            }
            IndexerState state = getState();
            
            if (state == IndexerState.STARTED && context.shouldStopAtCheckpoint() != shouldStopAtCheckpoint) {
                IndexerState newIndexerState = IndexerState.STARTED;
                TransformTaskState newtaskState = context.getTaskState();
                
                
                
                if (shouldStopAtCheckpoint && initialRun()) {
                    newIndexerState = IndexerState.STOPPED;
                    newtaskState = TransformTaskState.STOPPED;