### Is there an existing issue for this?

- [X] I have searched the existing issues

### Current Behavior

When creating an opensearch/elasticsearch domain, a custom endpoint URL may be set on the domain via the `CustomEndpoint`/`CustomEndpointEnabled` request params. localstack respects these params when initially setting up the domain and correctly routes requests made to the custom endpoint, but it doesn't "remember" this config, which has two effects:

1. The response from the `CreateElasticsearchDomain` (and any subsequent `DescribeElasticsearchDomain`) request incorrectly has `CustomEndpoint` omitted and `CustomEndpointEnabled` set to `false`
2. When restoring an opensearch/elasticsearch domain from persisted state, any custom endpoint config is lost/ignored, and making a request to the custom endpoint returns a 404 (of course this is also broken by #8092, but this bug would still happen even if that one is fixed!)

### How are you starting LocalStack?

With a docker-compose file

### Steps To Reproduce

```
awslocal es create-elasticsearch-domain \
  --domain-name example \
  --domain-endpoint-options CustomEndpointEnabled=true,CustomEndpoint=example.com:1234/foo
```
This gives the following response (irrelevant properties omitted):
```jsonc
{
    "DomainStatus": {
        "Endpoint": "example.com:1234/foo",
        "DomainEndpointOptions": {
            "EnforceHTTPS": false,
            "TLSSecurityPolicy": "Policy-Min-TLS-1-0-2019-07",
            "CustomEndpointEnabled": false
        },
        ...
    }
}
```

Note that `CustomEndpointEnabled` is false when it should be true, and `CustomEndpoint` is omitted when it should be `example.com:1234/foo` (the same as the `Endpoint` property). 

The same response is given when subsequently running `awslocal es describe-elasticsearch-domain --domain-name example`

### Environment

```markdown
- OS: docker desktop (on a windows 11 host)
- LocalStack: latest (2.3.3.dev)
```


### Anything else?

_No response_
def test_custom_backend(self, httpserver, monkeypatch):
        monkeypatch.setattr(config, "OPENSEARCH_ENDPOINT_STRATEGY", "domain")
        monkeypatch.setattr(config, "OPENSEARCH_CUSTOM_BACKEND", httpserver.url_for("/"))
        
        httpserver.expect_request("/").respond_with_json(
            {
                "name": "om",
                "cluster_name": "opensearch",
                "cluster_uuid": "gREewvVZR0mIswR-8-6VRQ",
                "version": {
                    "number": "7.10.0",
                    "build_flavor": "default",
                    "build_type": "tar",
                    "build_hash": "51e9d6f22758d0374a0f3f5c6e8f3a7997850f96",
                    "build_date": "2020-11-09T21:30:33.964949Z",
                    "build_snapshot": False,
                    "lucene_version": "8.7.0",
                    "minimum_wire_compatibility_version": "6.8.0",
                    "minimum_index_compatibility_version": "6.0.0-beta1",
                },
                "tagline": "You Know, for Search",
            }
        )
        httpserver.expect_request("/_cluster/health").respond_with_json(
            {
                "cluster_name": "opensearch",
                "status": "green",
                "timed_out": False,
                "number_of_nodes": 1,
                "number_of_data_nodes": 1,