### 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_
for idx, tag in enumerate(existing_tags):
                if item["Key"] == tag["Key"]:
                    return idx
            return None
        for item in tags:
            existing_index = existing_tag_index(item)
            if existing_index is None:
                existing_tags.append(item)
            else:
                existing_tags[existing_index] = item
        sns_backend.sns_tags[resource_arn] = existing_tags
        return TagResourceResponse()
    def delete_topic(self, context: RequestContext, topic_arn: topicARN) -> None:
        call_moto(context)
        sns_backend = SNSBackend.get()
        sns_backend.sns_subscriptions.pop(topic_arn, None)
        sns_backend.sns_tags.pop(topic_arn, None)
        event_publisher.fire_event(
            event_publisher.EVENT_SNS_DELETE_TOPIC,
            payload={"t": event_publisher.get_hash(topic_arn)},
        )
    def create_topic(