### Is there an existing issue for this?

- [X] I have searched the existing issues

### Current Behavior

When relaying a message with `MessageAttributes` to a SQS DLQ after failing to deliver to another SQS queue, the messages attributes were wrong.
Snapshots results:
With `RawDelivery` set to `false`:
```json
{
  "Body": {
    "Message": "test_dlq_after_sqs_endpoint_deleted",
    "MessageAttributes": {
      "attr1": {
        "Type": "Number",
        "Value": "111"
      },
      "attr2": {
        "Type": "Binary",
        "Value": "AgME"
      }
    },
    "MessageId": "<uuid:1>",
    "Signature": "<signature>",
    "SignatureVersion": "1",
    "SigningCertURL": "https://sns.<region>.amazonaws.com/SimpleNotificationService-<signing-cert-file:1>",
    "Timestamp": "date",
    "TopicArn": "arn:aws:sns:<region>:111111111111:<resource:1>",
    "Type": "Notification",
    "UnsubscribeURL": "<unsubscribe-domain>/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:<region>:111111111111:<resource:1>:<resource:2>",
  },
  "MD5OfBody": "<md5-hash>",
  "MD5OfMessageAttributes": "<md5-hash>",
  "MessageAttributes": {
    "ErrorCode": {
      "DataType": "String",
      "StringValue": "200"
    },
    "ErrorMessage": {
      "DataType": "String",
      "StringValue": "An error occurred (AWS.SimpleQueueService.NonExistentQueue) when calling the GetQueueUrl operation (reached max retries: 0): The specified queue does not exist for this wsdl version."
    },
    "RequestID": {
      "DataType": "String",
      "StringValue": "<uuid:?>"
    }
  },
  "MessageId": "<uuid:2>",
  "ReceiptHandle": "<receipt-handle:1>"
}
```
We can see added `MessageAttributes` on the received SQS message.

With `RawDelivery` set to `true`:
```json
{
  "Body": "test_dlq_after_sqs_endpoint_deleted",
  "MD5OfBody": "<md5-hash>",
  "MD5OfMessageAttributes": "<md5-hash>",
  "MessageAttributes": {
    "ErrorCode": {
      "DataType": "String",
      "StringValue": "200"
    },
    "ErrorMessage": {
      "DataType": "String",
      "StringValue": "An error occurred (AWS.SimpleQueueService.NonExistentQueue) when calling the GetQueueUrl operation (reached max retries: 0): The specified queue does not exist for this wsdl version."
    },
    "RequestID": {
      "DataType": "String",
      "StringValue": "<uuid:?>"
    }
  },
  "MessageId": "<uuid:1>",
  "ReceiptHandle": "<receipt-handle:1>"
}
```

### Expected Behavior

With `RawDelivery` set to `false`:
```json
{
  "Body": {
    "Type": "Notification",
    "MessageId": "<uuid:1>",
    "TopicArn": "arn:aws:sns:<region>:111111111111:<resource:1>",
    "Message": "test_dlq_after_sqs_endpoint_deleted",
    "Timestamp": "date",
    "SignatureVersion": "1",
    "Signature": "<signature>",
    "SigningCertURL": "https://sns.<region>.amazonaws.com/SimpleNotificationService-<signing-cert-file:1>",
    "UnsubscribeURL": "<unsubscribe-domain>/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:<region>:111111111111:<resource:1>:<resource:2>",
    "MessageAttributes": {
      "attr2": {
        "Type": "Binary",
        "Value": "AgME"
      },
      "attr1": {
        "Type": "Number",
        "Value": "111"
      }
    }
  },
  "MD5OfBody": "<md5-hash>",
  "MessageId": "<uuid:2>",
  "ReceiptHandle": "<receipt-handle:1>"
}
```
With `RawDelivery` set to `true`:
```json
{
  "Body": "test_dlq_after_sqs_endpoint_deleted",
  "MD5OfBody": "<md5-hash>",
  "MD5OfMessageAttributes": "<md5-hash>",
  "MessageAttributes": {
    "attr1": {
      "DataType": "Number",
      "StringValue": "111"
    },
    "attr2": {
      "BinaryValue": "b'\\x02\\x03\\x04'",
      "DataType": "Binary"
    }
  },
  "MessageId": "<uuid:1>",
  "ReceiptHandle": "<receipt-handle:1>"
}
```
We can see the attributes are kept and not replaced with Error messages. 

### How are you starting LocalStack?

With the `localstack` script

### Steps To Reproduce

Using `tests.integration.test_sns.TestSNSProvider.test_redrive_policy_sqs_queue_subscription`

### Environment

```markdown
- OS:MacOS Monterey 12.5
- LocalStack: 1.0.5dev (latest)
```


### Anything else?

_No response_
if not dlq_arn:
        return
    LOG.info("Sending failed execution %s to dead letter queue %s", source_arn, dlq_arn)
    messages = _prepare_messages_to_dlq(source_arn, event, error)
    if ":sqs:" in dlq_arn:
        queue_url = aws_stack.get_sqs_queue_url(dlq_arn)
        sqs_client = aws_stack.connect_to_service("sqs")
        error = None
        result_code = None
        try:
            result = sqs_client.send_message_batch(QueueUrl=queue_url, Entries=messages)
            result_code = result.get("ResponseMetadata", {}).get("HTTPStatusCode")
        except Exception as e:
            error = e
        if error or not result_code or result_code >= 400:
            msg = "Unable to send message to dead letter queue %s (code %s): %s" % (
                queue_url,
                result_code,
                error,
            )
            if "InvalidMessageContents" in str(error):
                msg += f" - messages: {messages}"
            LOG.info(msg)
            raise Exception(msg)
    elif ":sns:" in dlq_arn:
        sns_client = aws_stack.connect_to_service("sns")
        for message in messages:
            sns_client.publish(