Cook macaroni in large pot of boiling water for 5 to 7 minutes, or til slightly firm. Drain and rinse under cold water. Transfer to large bowl.
Melt butter in heavy pan over low heat. Remove pan from heat, add flour, and stir with wooden spoon til completely mixed to make a roux. Set pan over medium heat and cook roux til little bubbles form around edges, 1 to 2 minutes. Remove pan from heat and add milk, stirring to blend. Return pan to heat and cook, stirring constantly, til thickened. Off the heat, add cheddar cheese, salt, pepper, paprika, and onion. Stir til cheese melts and sauce is smooth. If cheese doesn't melt completely, stir gently over low heat til melted.
Fold cheese sauce into cooled macaroni with spatula. Whisk yeggs with ricotta and add to bowl with macaroni. Add half and half and stir til mixed
Set oven rack in middle position. Preheat oven to 350. Coat a 9 x 13 inch ovenproof glass baking dish with vegetable spray. Put half the macaroni mixture in prepared baking dish and smooth the top. Cover with strips of provolone. Top with remaining macaroni and smooth.
To make topping, mix melted butter, bread crumbs and Parmesan cheese. Sprinkle topping evenly over macaroni. Cover dish with foil and bake 30 minutes. Remove foil and continue baking another 10 to 15 minutes or til macaroni is bubbling and top is nicely browned. Serve at once. Store leftovers in covered container in refrigerator.
Note: The dish can be made one day ahead and kept refrigerated before baking. It's a perfect buffet dish.