### Is there an existing issue for this?

- [X] I have searched the existing issues

### Current Behavior

Starting the localstack docker using the elasticmq SQS backend results in not being able to send any messages.  Appears to work fine in 0.12.17

### Expected Behavior

Messages should send fine.

### How are you starting LocalStack?

With a `docker run` command

### Steps To Reproduce

Run docker with:
```
docker run --rm -it -p 4566:4566 --env SERVICES=sqs --env SQS_PROVIDER=elasticmq --env DEBUG=1 localstack/localstack:0.12.18
```
Execute a simple SQS send:
```
AWS_ACCESS_KEY_ID=x AWS_SECRET_ACCESS_KEY=y aws --endpoint-url=http://localhost:4566 sqs create-queue --queue-name foo && aws --endpoint-url=http://localhost:4566 sqs send-message --queue-url "http://localhost:4658/000000000000/foo" --message-body foo
```
results in failure:
```
Unable to parse response (not well-formed (invalid token): line 1, column 0), invalid XML received. Further retries may succeed:
b'{}'
```

### Environment

```markdown
- OS: macOS 11.6
- LocalStack: 0.12.18
```


### Anything else?

I'm pretty sure that commit e38778888534cb6d98f27edaf5af76c1e1d29e06 broke the functionality.  I _think_ the `_process_sent_message` function is assuming something about the response that just isn't true, but I haven't gotten any further in my analysis.

Also, I need to use elasticmq because the moto implementation is just not fast enough.  We've been using an older release (0.11.3), using elasticmq, and I can send and receive 10,000 2K bodies in about 25 seconds, but using 0.12.18 and moto I can only send about 1200 and receive about 450 in those 25 seconds, and the slowdown just isn't acceptable for our integration tests.
req_data = clone(req_data)
        orig_types = {}
        for key, entry in dict(req_data).items():
            
            
            
            if key.endswith("DataType"):
                parts = entry.split(".")
                if len(parts) > 2:
                    short_type_name = parts[0]
                    full_type_name = entry
                    attr_num = key.split(".")[1]
                    attr_name = req_data["MessageAttribute.%s.Name" % attr_num]
                    orig_types[attr_name] = full_type_name
                    req_data[key] = [short_type_name]
                    if full_type_name not in TRANSPORT_TYPE_ENCODINGS:
                        TRANSPORT_TYPE_ENCODINGS[full_type_name] = TRANSPORT_TYPE_ENCODINGS[
                            short_type_name
                        ]
        
        req_data_lists = dict([(k, [v]) for k, v in req_data.items()])
        moto_message = Message("dummy_msg_id", "dummy_body")
        moto_message.message_attributes = parse_message_attributes(req_data_lists)
        for key, data_type in orig_types.items():
            moto_message.message_attributes[key]["data_type"] = data_type
        message_attr_hash = moto_message.attribute_md5
        return message_attr_hash
    
    def fix_missing_tag_values(self, req_data):