### Is there an existing issue for this?

- [X] I have searched the existing issues

### Current Behavior

In AWS, DescribeSubnet Response returns:
```
<?xml version="1.0" encoding="UTF-8"?>\n
    <Response>
        <Errors>
            <Error>
                <Code>InvalidSubnetID.NotFound</Code>
                <Message>The subnet ID \'test\' does not exist</Message>
            </Error>
        </Errors>
    <RequestID>f6d041c1-1c96-4720-af30-77745504e2ba</RequestID>
</Response>
```

whereas localstack returns:
```
<?xml version=\'1.0\' encoding=\'utf-8\'?>\n<Errors xmlns="http://ec2.amazonaws.com/doc/2016-11-15">
    <Error>
        <Code>InvalidSubnetID.NotFound</Code>
        <Message>aaThe subnet ID \'vpc-test\' does not exist</Message>
    </Error>
    <RequestID>EADJHWMM796CI5FT10XGFMGOXIPCBAHBWINMV0HR6SKBRODGCU5J</RequestID>
</Errors>

```

### Expected Behavior

It should return correct response structure. It causes terraform to complain.

### How are you starting LocalStack?

Custom (please describe below)

### Steps To Reproduce

#### How are you starting localstack (e.g., `bin/localstack` command, arguments, or `docker-compose.yml`)

    make start

#### Client commands (e.g., AWS SDK code snippet, or sequence of "awslocal" commands)

     awslocal ec2 describe-subnets --subnet-ids vpc-test --debug


### Environment

```markdown
- OS: M1 MacOS
- LocalStack: 1.0.2.dev
```


### Anything else?

Probably `call_moto` function in `localstack/services/moto.py` is changing the error code structure.
self, response: dict, operation_model: OperationModel
    ) -> HttpResponse:
        """
        Serializes a given response dict (the return payload of a service implementation) to an _event stream_ using the
        given operation model.
        :param response: dictionary containing the payload for the response
        :param operation_model: describing the operation the response dict is being returned by
        :return: HttpResponse which can directly be sent to the client (in chunks)
        """
        event_stream_shape = operation_model.get_event_stream_output()
        event_stream_member_name = operation_model.output_shape.event_stream_name
        # wrap the generator in operation specific serialization
        def event_stream_serializer() -> Iterable[bytes]:
            yield self._encode_event_payload("initial-response")
            # yield convert_to_binary_event_payload("", event_type="initial-response")
            # create a default response
            serialized_event_response = self._create_default_response(operation_model)
            # get the members of the event stream shape
            event_stream_shape_members = (
                event_stream_shape.members if event_stream_shape is not None else None
            )
            # extract the generator from the given response data
            event_generator = response.get(event_stream_member_name)
            if not isinstance(event_generator, Iterator):
                raise ProtocolSerializerError(
                    "Expected iterator for streaming event serialization."
                )
            # yield one event per generated event