### Elasticsearch Version

7.17, 8.x

### Installed Plugins

_No response_

### Java Version

_bundled_

### OS Version

Darwin

### Problem Description

The migrate to data tiers API can sometimes configure an illegal value for the `_tier_preference` setting for partially mounted indices.
This can happen if two conditions are met: 
1. if the partially mounted index doesn't have a `_tier_preference` configured
2. if the migrate to data tiers API doesn't perform any migration for this index (e.g. say this partially mounted index doesn't use the `data` custom attribute name for any allocation filtering, but either uses some other node attribute name or none at all)

In this case this piece of code kicks in to configure a default tier preference https://github.com/elastic/elasticsearch/blob/main/x-pack/plugin/ilm/src/main/java/org/elasticsearch/xpack/cluster/metadata/MetadataMigrateToDataTiersRoutingService.java#L534

This is wrong, and we should configure the `MountSearchableSnapshotRequest.Storage.defaultDataTiersPreference` as the tier preference.

Relates to https://github.com/elastic/elasticsearch/issues/84758

### Steps to Reproduce

1. Mount an index - `partial-test`
2. Remove the `_tier_preference` using
```
PUT partial-test/_settings
{
  "index.routing.allocation.include._tier_preference": null
}
```
3. Call the migrate to data tiers routing API 
```
POST /_ilm/migrate_to_data_tiers
```

### Logs (if relevant)

_No response_
x-pack/plugin/ilm/src/main/java/org/elasticsearch/xpack/cluster/metadata/MetadataMigrateToDataTiersRoutingService.java
LifecycleExecutionState.Builder updatedState = LifecycleExecutionState.builder(currentExState);
                        PhaseExecutionInfo phaseExecutionInfo = new PhaseExecutionInfo(
                            newPolicyMetadata.getPolicy().getName(),
                            newPolicyMetadata.getPolicy().getPhases().get(currentStepKey.phase()),
                            newPolicyMetadata.getVersion(),
                            newPolicyMetadata.getModifiedDate()
                        );
                        String newPhaseDefinition = Strings.toString(phaseExecutionInfo, false, false);
                        updatedState.setPhaseDefinition(newPhaseDefinition);
                        logger.debug(
                            "updating the cached phase definition for index [{}], current step [{}] in policy " + "[{}] to [{}]",
                            indexMetadata.getIndex().getName(),
                            currentStepKey,
                            policyName,
                            newPhaseDefinition
                        );
                        mb.put(IndexMetadata.builder(indexMetadata).putCustom(ILM_CUSTOM_METADATA_KEY, updatedState.build().asMap()));
                    }
                }
            }
        }
    }
    /**
     * Returns a list of phases that had an allocate action defined in the old policy, but don't have it anymore in the new policy
     * (ie. they were allocate actions that only specified attribute based routing, without any number of replicas configuration and we
     * removed them as part of the migration of ILM policies to data tiers in order to allow ILM to inject the migrate action)
     */
    private static List<String> getMigratedPhasesWithoutAllocateAction(LifecyclePolicy oldPolicy, LifecyclePolicy newLifecyclePolicy) {