In a small saucepan, combine milk and butter. Warm over medium low heat until butter is melted. Cool for about 5 minutes, or until temperature is 120-130°F.
In the bowl of a stand mixer fitted with a dough hook (or in a large bowl if mixing by hand), whisk together 2 1/2 cups bread flour, yeast, sugar and salt. With mixer on low speed (or using a spatula or dough whisk), add warm milk-butter mixture and eggs; mix until fully combined.
Add remaining bread flour, 2 tablespoons at a time, while mixing on medium low speed until dough almost clears the bowl and is only a slightly sticky to the touch. (It's okay if some dough sticks to your fingers.) You may not need all of the remaining flour, or you may need more than is called for - go by how the dough looks and feels.
Switch to dough hook attachment (or turn dough out onto lightly floured surface). Knead dough until smooth and elastic, about 5-7 minutes.
Place dough in oiled bowl; turn to coat all sides. Cover with plastic wrap and let rise in a warm place until doubled in size, about 1 hour.
Punch down dough and let rest for a few minutes. Divide dough into 12 equal pieces and shape into balls or desired shape (see Notes).
Place in a 9x13-inch pan or quarter sheet pan lined with parchment paper. Spray some plastic wrap with non-stick cooking spray and place over the shaped buns/rolls. Return to a warm place and let rise until doubled in size, about 30 minutes.
Preheat oven to 350°F.
Brush rolls with egg wash. Bake until golden brown, about 20 minutes. Serve warm or cool completely on a wire rack.