1. Preheat the oven to 400°F. Have a 9x13-inch baking dish ready. Set a pot of water (for the pasta) over high heat and cover.
2. In a large skillet, melt 3 tablespoons of the butter over medium-high heat. Add the mushrooms and shallot and saute, stirring occasionally, until the mushrooms have cooked down and are browned, 8-10 minutes. Season with salt and pepper. Add the vinegar and cook, stirring, until the liquid has cooked off. Turn off the heat and set aside.
3. For the bechemel sauce, in a medium-sized saucepan, melt 4 tablespoons of the butter over medium heat. Once the butter has melted, whisk in the flour and cook for about 30 seconds, whisking constantly. Add the herbs and, still whisking, saute for another 30 seconds. In a slow, steady stream, whisk in the milk. Allow the sauce to come to a simmer.
4. While waiting for the sauce to simmer, add the pasta to the pot of boiling water and cook to al dente, or 1-2 minutes less than the box calls for.
5. Once the bechemel sauce simmers, stir in 5 ounces each of the Gruyere and white cheddar cheeses until completely melted. Season with salt and pepper. Turn off the heat.
6. Melt the remaining 4 tablespoons butter. In a small bowl, mix the melted butter with the breadcrumbs.
7. Strain the pasta and in a large mixing bowl, toss the pasta, the sauce, and the mushrooms. Pour into the baking dish. Sprinkle with remaining 1 ounce each of Gruyere and white cheddar. Sprinkle the breadcrumb mixture on top of the cheese.
8. Bake for 15-20 minutes, until browned and bubbly. Let sit for 10-15 minutes before serving.