1. DLQ больше не сериализуется вложенным объектом (была detached-копия после
загрузки + неограниченная рекурсия при цикле): в метаданных хранится только
имя (dead_letter_queue_name), после LoadAllQueues указатель релинкуется на
объект из map. Закрывает потерянные переносы в DLQ и чужой мьютекс.
2. Retention-эвикция: компакция НА МЕСТЕ (чтение value в i, запись в n<=i)
вместо kept := Messages[:0] — устранён алиасинг на переиспользуемом срезе.
3. countBatchEntries: явный req.ParseForm() — корректный msg_count для батчей.
Тесты: +DLQ-перенос, +эвикция с сохранением порядка; go test -race зелёный.