In a large pot of lightly salted boiling water, cook macaroni noodles until tender. Drain, rinse and set aside.
For the cheese mixture, in a large pot, melt butter over medium heat. Whisk in flour, stirring continuously for 2 minutes, making sure it's free of lumps. Add milk and half and half, slowly continuing to whisk. Increase heat to high and bring to a boil. Reduce heat to a simmer and cook mixture for 10 minutes, whisking frequently. Remove from heat and stir in white cheddar, Gruyère cheese, Parmesan cheese and salt. Fold the cooked macaroni noodles into the cheese mixture. Cool to room temperature and then cover and refrigerate at least one hour.
To assemble, scoop a heaping tablespoon of macaroni and roll into a tightly packed ball. Place on a parchment-lined baking sheet. Once all the macaroni has been rolled, place in freezer for 20 minutes to firm up.
Preheat oven to 425ºF. Place a baking rack on a baking sheet and coat the rack with non-stick cooking spray. Place flour and salt in a small bowl. Place eggs in a second bowl and panko breadcrumbs tossed with the olive oil in a third bowl. Dip macaroni balls in the flour, shaking off excess flour, then dip into eggs and then the panko mixture, patting crumbs to adhere. Place on baking rack and bake 15 minutes until golden brown. If desired, serve with marinara sauce for dipping. Serve immediately.