Preheat oven to 350 degrees. Grease a muffin tin with non stick cooking spray or with muffin liners. Add flour, salt, cinnamon, baking powder and baking soda to a large bowl.
In a stand mixer with the paddle attachment cream butter and both sugars, 2-3 minutes.
Add in eggs one at a time, scraping the bowl between each addition.
Stir in vanilla, sour cream and canola oil and mix to combine.
Fold in dry ingredients and mix just until combined. (Do not overmix).
Scoop batter into muffin tin filling 3/4 of the way up. Sprinkle with the streusel topping.
Place in the oven and bake for 15-20 minutes or until muffins are set. Stick a toothpick or knife in the center and make sure it comes out clean. Allow the muffins to cool in the pan for 10 minutes and then transfer to a wire rack to cool completely.
Drizzle glaze on top of each cooled muffin and serve!
Streusel topping
Add butter, brown sugar, flour and cinnamon to a small bowl. Mix together until the streusel forms a crumb like texture similar to wet sand. Set aside.
Glaze
Add sugar and milk to a small bowl. Whisk to combine. Set aside.
Notes
This recipe has been updated 10/6/17 based on the comments below. I have tested it numerous times, added more butter and adjusted other ingredients for the perfect muffin!!