Place your Dutch oven over medium heat and add the chopped bacon. Cook, stirring occasionally, for 7 to 9 minutes until crisp and the fat has rendered out.
Use a slotted spoon to transfer the bacon to a paper-towel-lined plate, leaving the drippings in the pot. Spoon off all but about 2 tablespoons of the bacon fat.
Add the butter to the reserved bacon fat and let it melt over medium heat. Stir in the diced onion and the white parts of the green onions and cook for 4 to 5 minutes until soft and translucent.
Add the minced garlic and cook for about 30 seconds, just until fragrant.
Sprinkle the flour evenly over the onions and butter. Whisk constantly for 1 to 2 minutes to cook out the raw flour taste until it forms a thick, pale paste.
Pour in the chicken broth slowly, whisking the whole time to keep the roux smooth. Add the diced russet potatoes and stir to combine.
Season with the salt and black pepper. Bring the pot to a gentle boil, then reduce to a steady simmer.
Let the soup simmer, uncovered, for 15 to 18 minutes, stirring now and then and scraping the bottom so nothing sticks, until a fork slides through a potato piece with no resistance.
Lower the heat to medium-low. Use a potato masher to mash roughly half of the potatoes directly in the pot, or run an immersion blender along one side for a few short pulses, leaving plenty of soft chunks.
With the heat on medium-low, pour in the whole milk and heavy cream. Warm the soup through for 3 to 4 minutes without letting it boil.
Add the shredded cheddar a handful at a time, stirring until each addition melts. Stir in the sour cream last, mixing until the soup looks glossy and smooth.
Stir in most of the crisp bacon, reserving some for the top. Taste and adjust with more salt and pepper as needed.
Ladle the soup into bowls while hot. Top each bowl with extra cheddar, the reserved bacon, a dollop of sour cream, and the sliced green parts of the green onions.