"Je pense avoir reçu" jest jak najbardziej poprawne. Dla purystów będzie ono nawet jedynym możliwym zdaniem poprawnym. Konstrukcja "Je pense que j'ai reçu", chociaż rozpowszechniona, nie jest gramatycznie idealna, bowiem zgodnie z zasadami, jeżeli zdanie podrzędne ma ten sam podmiot, co nadrzędne, powinno być zastąpione konstrukcją bezokolicznikową. Czyli:
Je pense qu'il a reçu (OK, bo w różne podmioty - je i il)
Je pense que j'ai reçu (już nie do końca OK, bo podmioty te same; lepiej: Je pense avoir reçu).
Nie jest to żaden idiom. Ot, francuska gramatyka :)