Cook the bacon in a large Dutch Oven or soup pot over medium heat and cook until bacon is crisp and browned. Use this same pot to make the rest of the soup!
Once the bacon is cooked to your liking, remove it and set aside, leaving drain most of the grease, but leave some for flavor. Add butter and chopped onion, cook over medium heat until onions are tender (3-4 minutes).
Sprinkle flour and seasonings and garlic over the onions, stir it in well. This is to form a roux.
Add diced, peeled potatoes to the pot with chicken broth, milk, heavy cream. Bring to a boil and cook until potatoes are tender when pierced with a fork (about 15-18 minutes).
Reduce heat to simmer. Carefully remove a few cups of the potatoes and soup mixture to a blender and puree until smooth. You can also use an immersion blender, just motion it up and down a few (maybe 3-4) times and it will thicken the soup up. Don't do too much with the immersion blender, you want to leave several potatoes whole for texture.
Let the soup come back to temperature. Serve the soup and garnish with chopped chives, chopped bacon crisps, cheddar cheese and a little dollop of sour cream. Enjoy warm!