В заголовке есть фиксированное количество дополнительных байтов, независимо от объема зашифрованного текста.Это видно из вашей строки кода
encrypted_data = cipher_rsa.encrypt(session_key) + cipher_aes.nonce + tag + ciphertext
В этих дополнительных данных будет доминировать сеансовый ключ, зашифрованный RSA.Более экономичный выбор - ECIES с использованием хорошо известной 256-битной эллиптической кривой.
Однако у вас также есть расширение данных из-за кодирования.Вы выбираете кодировку в шестнадцатеричном формате, которая удваивает объем данных.Более эффективное и хорошо поддерживаемое кодирование - это кодировка base64.Кодировка Base64 расширяет данные в 4/3 раза.Наиболее экономичным является избегать кодирования вообще, а просто хранить и передавать необработанные байты.Вам нужно только закодировать данные, если они будут проходить через канал, который не может обрабатывать двоичные данные.