Já dei crédito pela resposta, mas acho que vale a pena mencionar aqui exatamente qual foi a raiz dos meus problemas, caso alguém encontre esse item enquanto procura uma resposta para seu próprio problema.
O problema é que a implementação C# de consultas parametrizadas para Oracle contém um bug sério e potencialmente perigoso - um verdadeiro "pit in the public domain":
Não importa como você nomeia seus parâmetros; eles precisam ser adicionados na ordem em que aparecem na consulta.
Veja mais aqui .