In a small saucepan, add 1 tablespoon of butter and the diced onion. Sauté and stir occasionally over medium heat for about 4 minutes, until the onion is translucent and just beginning to brown.
Add the garlic and cook for about 30 seconds, stirring constantly so it doesn’t burn. Remove the saucepan from the heat and set aside.
In a large heavy-bottom pot, add 4 tablespoons of butter and flour. Cook over medium heat for about 3 to 5 minutes, whisking constantly until the flour has thickened.
Slowly add the vegetable stock, whisking constantly. Do the same with the half-and-half.
Allow the mixture to simmer over low heat for about 15 to 20 minutes, or until it has reduced and slightly thickened. Whisk occasionally to stir the skin that forms on the surface back into the mixture.
After simmering for 15 to 20 minutes, add the broccoli, carrots, and the onion and garlic you prepared earlier.
Add the salt, pepper, optional paprika, optional cayenne, and optional dry mustard powder. Stir to combine.
Allow the soup to simmer over low heat for about 20 to 25 minutes, or until it has reduced and become thicker. Whisk occasionally.
After simmering for about 20 to 25 minutes, add most of the shredded cheese and stir for about 1 minute, or until the cheese has melted. Reserve some of the shredded cheese to sprinkle onto each serving.
Transfer the soup to bowls, top with shredded cheese, and serve.