Cook pasta according to directions. Cook bacon and drain on paper towels. Keep bacon fat in pan. Crumble bacon when cool.
Topping: Combine breadcrumbs, crumbled bacon, Parmesan, rosemary, thyme and 2 tablespoons of melted butter. Set aside.
Preheat oven to 375. Sauté shallots over low heat in bacon fat for one minute. Add remaining 6 tablespoons of butter and continue to sauté shallots until translucent. Add flour and continue to cook for 1-2 minutes. Increase heat to medium while stirring constantly with a whisk and add milk. Cook until sauce is thickened and remove from heat then add salt, pepper, nutmeg, smoked paprika, Gruyere and cheddar. Taste and adjust salt and pepper if necessary. Stir in pasta and pour into baking dish. Sprinkle topping and cover with foil, bake 15 minutes. Remove foil and continue baking until sauce is bubbly and topping is brown. I believe that it tastes even better the next day. If you have time, prepare it a day ahead (minus breadcrumbs) and bake before serving.