In a medium saucepan set over low heat, add milk, condensed milk, butter, vanilla, bourbon, salt and cinnamon. Whisk to combine and warm just until butter melts. Remove from the heat and allow to cool while you prepare the eggs and bread.
In a separate bowl whisk eggs and yolks. Set aside.
Cut the bread into 2-inch cubes. Spread a thin layer of butter over the bottom and sides of a 4-to-6-cup baking dish and fill it with the cubed bread.
While whisking the eggs, pour a small amount of the heated milk mixture into the eggs (about ½ cup). Move your whisk to the remaining milk mixture and begin whisking while you pour the egg mixture into the warmed milk. This is called tempering and it prevents the eggs from scrambling when they’re added to hot liquid.
Pour the milk mixture over the cubed bread, gently pressing the top layer down to soak in the liquid. Let the mixture sit for an hour. Alternately, cover with foil and place in the fridge overnight to bake the next day.
Heat the oven to 350ºF. Prepare the topping: Melt the 2 tablespoons of butter and drizzle on top of the bread mixture. Stir together the cinnamon and sugar then sprinkle on top of the bread mixture.
Bake in the preheated oven for 35 to 40 minutes, or until custard is set but still a little wobbly and edges of bread have browned. Serve warm or at room temperature, with bourbon sauce, or with ice cream.
Make the Bourbon Sauce (optional): Melt butter in a small saucepan. Add the powdered sugar whisking until there’s no lumps. Add the bourbon and whisk again. Pour over bread pudding just prior to serving