### Elasticsearch Version

8.x

### Installed Plugins

_No response_

### Java Version

_bundled_

### OS Version

Any

### Problem Description

ILM [SwapAliasesAndDeleteSourceIndexStep](https://github.com/elastic/elasticsearch/blob/ffcf0eac010df3b5ba7989c5dd87bf362dd0d311/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ilm/SwapAliasesAndDeleteSourceIndexStep.java) doesn't play nicely with with hidden aliases. 

When we copy the aliases from the source index in the move step, we do not copy the is_hidden value.

This can lead to permanently bad ILM state with an error like:

```
policy [kibana-event-log-policy] for index [.kibana-event-log-7.11.1-000044] failed on step [{"phase":"frozen","action":"searchable_snapshot","name":"swap-aliases"}]. Moving to ERROR step java.lang.IllegalStateException: alias [.kibana-event-log-7.11.1] has is_hidden set to true on indices [...]; alias must have the same is_hidden setting on all indices at org.elasticsearch.cluster.metadata.Metadata$Builder.validateAlias(Metadata.java:2089) 
```

### Steps to Reproduce

Combination of ILM and hidden aliases.

### Logs (if relevant)

_No response_
server/src/main/java/org/elasticsearch/action/admin/indices/alias/IndicesAliasesRequest.java
public static AliasActions removeIndex() {
            return new AliasActions(AliasActions.Type.REMOVE_INDEX);
        }
        private static ObjectParser<AliasActions, Void> parser(String name, Supplier<AliasActions> supplier) {
            ObjectParser<AliasActions, Void> parser = new ObjectParser<>(name, supplier);
            parser.declareString((action, index) -> {
                if (action.indices() != null) {
                    throw new IllegalArgumentException("Only one of [index] and [indices] is supported");
                }
                action.index(index);
            }, INDEX);
            parser.declareStringArray(fromList(String.class, (action, indices) -> {
                if (action.indices() != null) {
                    throw new IllegalArgumentException("Only one of [index] and [indices] is supported");
                }
                action.indices(indices);
            }), INDICES);
            parser.declareString((action, alias) -> {
                if (action.aliases() != null && action.aliases().length != 0) {
                    throw new IllegalArgumentException("Only one of [alias] and [aliases] is supported");
                }
                action.alias(alias);
            }, ALIAS);
            parser.declareStringArray(fromList(String.class, (action, aliases) -> {
                if (action.aliases() != null && action.aliases().length != 0) {
                    throw new IllegalArgumentException("Only one of [alias] and [aliases] is supported");
                }
                action.aliases(aliases);
            }), ALIASES);
            return parser;