Preheat oven to 350°F. Grease three 9-inch-round layer-cake pans. Dust pans with flour, shaking out the excess.
Beat together butter and sugar in large bowl until smooth and creamy. Add eggs, one at a time, beating well after each addition.
Sift together flour, baking powder and salt. On low speed, alternately beat flour mixture and milk into butter mixture. Beat in vanilla. Scrape batter into prepared pans, dividing equally.
Bake in 350°F oven for 20 to 25 minutes or until a wooden pick inserted in middle of cakes comes out clean. Cool the cakes in pans on wire racks. Turn the cakes out onto the racks.
Mix together sugar and cornstarch in heavy 2-quart saucepan. Gradually stir in orange juice to make smooth paste. Cook over medium heat, stirring frequently, until thickened and bubbly, 3 to 5 minutes.
Add a little of the mixture to egg yolks in small bowl, beating rapidly. Add egg yolks to saucepan; cook 2 to 3 minutes or until thickened. Stir in butter until melted. Let the mixture cool.
Beat together the butter, cream cheese, sugar and vanilla in a small bowl until well blended.
Divide the filling into thirds. Use two-thirds of the filling to sandwich the 3 cake layers together. Spread the remaining third of filling over top. Decorate the sides of the cake with the frosting.