Se PERSON_RECORD_TYPE for usado como argumento ou tipo de resultado de algum procedimento ou função, você pode consultar ALL_ARGUMENTS. A informação é um pouco criptografada lá (a hierarquia de encapsulamento multinível de registros e coleções é codificada nas colunas POSITION,SEQUENCE e DATA_LEVEL), porém está presente.
Eu não acho que essa pergunta aponte para uma arquitetura errada. Para geração automática de código PLSQL, esta é uma solicitação completamente legítima, infelizmente com suporte à linguagem PLSQL muito fraco.