### Is there an existing issue for this?

- [X] I have searched the existing issues

### Current Behavior

Here are the kinesis events from inserting/deleting a dynamodb item:

```
{"eventID":"cf1199b0","eventVersion":"1.1","dynamodb":{"ApproximateCreationDateTime":1.635284406858227E9,"SizeBytes":56,"Keys":{"hash":{"S":"hash-691"},"range":{"S":"range-153"}},"NewImage":{"hash":{"S":"hash-691"},"range":{"S":"range-153"}}},"awsRegion":"us-east-1","eventSource":"aws:dynamodb","eventName":"INSERT","tableName":"bug"}

{"eventID":"976b515b","eventVersion":"1.1","dynamodb":{"ApproximateCreationDateTime":1.6352844070969691E9,"SizeBytes":4,"Keys":{"hash":{"S":"hash-691"},"range":{"S":"range-153"}},"OldImage":null},"awsRegion":"us-east-1","eventSource":"aws:dynamodb","eventName":"REMOVE","tableName":"bug"}
```

Note that the remove event has `OldImage` = `null`

### Expected Behavior

I expected `OldImage` to be `{"hash":{"S":"hash-691"},"range":{"S":"range-153"}}`.

### How are you starting LocalStack?

With a docker-compose file

### Steps To Reproduce

https://github.com/achaphiv/issue-localstack-dynamodb-stream-to-kinesis

```
# Create table/stream and hook them up
docker-compose up -d

# Create/delete an item
./mvnw -P write-to-dynamodb

# See the produced records
./mvnw -P watch-kinesis
```

### Environment

```markdown
- OS: Manjaro Linux
- LocalStack: 0.12.19
```


### Anything else?

_No response_
ddbstreams = aws_stack.connect_to_service("dynamodbstreams")
        kinesis = aws_stack.connect_to_service("kinesis")
        table_name = "ddb-%s" % short_uid()
        aws_stack.create_dynamodb_table(
            table_name,
            partition_key=PARTITION_KEY,
            stream_view_type="NEW_AND_OLD_IMAGES",
        )
        table = self.dynamodb.Table(table_name)
        # as
        expected_arn_prefix = "arn:aws:dynamodb:" + aws_stack.get_local_region()
        self.assertTrue(table.table_arn.startswith(expected_arn_prefix))
        self.assertTrue(table.latest_stream_arn.startswith(expected_arn_prefix))
        # as
        stream_tables = [s["TableName"] for s in ddbstreams.list_streams()["Streams"]]
        self.assertIn(table_name, stream_tables)
        stream_name = get_kinesis_stream_name(table_name)
        self.assertIn(stream_name, kinesis.list_streams()["StreamNames"])
        # as
        result = ddbstreams.describe_stream(StreamArn=table.latest_stream_arn)["StreamDescription"]
        self.assertIn("Shards", result)
        for shard in result["Shards"]:
            self.assertRegex(shard["ShardId"], r"^shardId\-[0-9]{20}\-[a-zA-Z0-9]{1,36}$")
        # cl
        delete_table(table_name)
        # as
        stream_tables = [s["TableName"] for s in ddbstreams.list_streams()["Streams"]]
        self.assertNotIn(table_name, stream_tables)
        self.assertNotIn(stream_name, kinesis.list_streams()["StreamNames"])
    def test_multiple_update_expressions(self):