Preheat oven to 300 degrees F. Lightly butter the inside of a 3-quart casserole dish. Set aside. Heat a medium saute pan over medium-high heat; add butter, olive oil, and onion. Saute for 3 to 4 minutes until translucent, then add the ham. Saute for 1 minute, add the asparagus, and cook for 30 seconds more. Remove from heat and cool. In a medium bowl, beat eggs well and then whisk in milk, smoked paprika, Dijon mustard, kosher salt, and cayenne pepper. Place the challah pieces in a large bowl and add the egg mixture. Let the mixture sit for 10 minutes, tossing occasionally. Put 1/2 of the mixture in the bottom of the prepared casserole dish. Top with 1/2 of the asparagus-ham mixture, 1/2 of the Cheddar cheese, and all of the goat cheese. Cover with the rest of the bread mixture, asparagus-ham mixture, and cheese. Bake in the preheated oven for about 45 minutes or until the internal temperature reads 165 degrees F. Let rest for 15 minutes before serving.