### Is there an existing issue for this?

- [X] I have searched the existing issues

### Current Behavior

I am using the latest tag for the CI/CD process and today it started to fail because unit tests for the S3 provider that cover multipart upload throw the "Expected hash not equal to calculated hash" error on uploading a part. It worked just fine with the old version. The same unit tests work correctly with the real S3 provider as well.

And there is another issue. You fixed the https://github.com/localstack/localstack/issues/8392 bug that I reported previously but there is no version on Docker Hub that has that fix but does not have the new bug I described above. It seems that you rewrite the latest tag in Docker Hub which makes it impossible to rollback to the previous version.

### Expected Behavior

1. The upload part works without throwing an exception.
2. The previous versions of Docker images are available on Docker Hub.

### How are you starting LocalStack?

With a docker-compose file

### Steps To Reproduce

1. Initiate multipart upload with the correct MD5 hash.
2. Upload a part for which the hash was calculated.

### Environment

```markdown
- OS: Windows 11
- LocalStack: latest
```


### Anything else?

_No response_
delete_markers: list[s3_models.FakeDeleteMarker] = []
        all_versions = list(itertools.chain(*(l for key, l in bucket.keys.iterlists())))
        
        all_versions.sort(key=lambda r: (r.name, -unix_time_millis(r.last_modified)))
        
        for version in all_versions:
            name = version.name
            
            if key_marker and name < key_marker:
                continue
            
            if not name.startswith(prefix):
                continue
            
            if delimiter and delimiter in name[len(prefix) :]:
                end_of_delimiter = (
                    len(prefix) + name[len(prefix) :].index(delimiter) + len(delimiter)
                )
                prefix_including_delimiter = name[0:end_of_delimiter]
                common_prefixes.append(prefix_including_delimiter)
                continue
            
            if isinstance(version, s3_models.FakeDeleteMarker):
                delete_markers.append(version)
                continue
            requested_versions.append(version)
        common_prefixes = sorted(set(common_prefixes))
        return requested_versions, common_prefixes, delete_markers
    @patch(s3_responses.S3Response._key_response_get)
    def _fix_key_response_get(