К сожалению, все запросы в MS у меня исчерпаны, так что пришлось методом дедукции... Что я имею сказать по данному поводу.
1. Описываемое мной поведение является прямым следствием фактического запрета на использование RC4 в Windows 8+
2. Сбой расшифровки должен рассматриваться как супер-SetErrorResult со смыслом: "хватит пользоваться скомпрометированным способом шифрования".
3. Сходное поведение проявляется и когда RC4 используется в стандартной реализации TLS/SSL (есть масса ссылок на то, как IE11 в Windows 8+ ведёт себя при попытке соединиться с защищённым ресурсом). Первый вызов проваливается, второй успешно выполняется.
4. Тупейший workaround, даже неловко его озвучивать, но если нет возможности заменить поточное шифрование на блочное, — проверять версию и если это 8+, то делать одну попытку расшифровать входной буфер, чтобы "размочить" RC4 в Windows, а потом уже делать второй, осмысленный вызов.
5. Все описанные в TechNet манипуляции с реестром и ключами, которые решают проблему п.3 в Windows — не помогают в случае использования CryptoAPI напрямую.
В общем и целом, мой изящный, помещающийся в 30 кб скомпилированного кода стек TLS, летит коту под хвост с запретом RC4 в Windows. Жаль. Но, может так и лучше, "может так надо", "может, я выйду из пламени преобразившимся".
Спасибо всем, кто тратил время на этот прочтение этого тупняка.