Melt 2 tbsp of butter in a large skillet over medium heat. Add onions and saute until soft and golden brown, about 5 minutes. Add in the garlic and cook until fragrant.
Add the ground beef, breaking into small pieces. Cook until browned. Then add the beef bouillon, breaking up. Next, add in the tomato paste and cook for another minute. Add the can of diced tomatoes. Add the wine, scrapping any bit off the skillet. Bring to a boil and simmer for 3 - 5 minutes until the wine has mostly cooked off.
Add the water, cinnamon, bay leaf, salt, and pepper and stir to combine. Bring to a boil, and reduce heat to simmer. Simmer until most of the liquid has cooked off. Taste and adjust seasoning if needed.
For the Bechamel
In a saucepan over medium heat, melt butter. Whisk in flour, and then slowly add in the warmed milk, whisking continuously. Cook for 5 minutes, stirring so it doesn't stick, until smooth and thick. It should be able to coat the back of a spoon.
Remove from the stove. Stir in cheese and salt.
Leave cool for 5 minutes. Then, quickly whisk in the egg yolks. (If it thickens while you prepare the rest, just reheat on low until pourable.)
Prepare the Pasta Layer
Cook the ziti 2 - 3 minutes less than the package instructions. (To ensure it won't get too soft when the dish is baked). Drain and rinse with cool water.
When the pasta is cool, mix with egg whites, feta, and salt.
Assembly
Preheat oven to 350℉. Spray a deep 9x13 inch dish with nonstick spray.
Dump the pasta in, arranging so they are in an even layer and all facing the same direction. Top with the meat sauce, smoothing the surface. Then, pour the bechamel over the meat. Finally, sprinkle with cheese.
Bake, uncovered, for 30 minutes. Bump your oven up to broil and bake until top is slightly browned, about 3 minutes. (Time varies depending on your oven). Cool for 10 minutes, cut, and serve.