In a large 6-quart Dutch oven or pot, cook the bacon over medium heat until fully cooked through and browned. Remove using a slotted spoon or tongs, and transfer to a plate lined with a paper towel. Set aside.
Remove some of the bacon fat from the pot (leave only about 2 tablespoons). Over medium heat, melt the butter. Add the celery and onion, and cook until softened, about 6-8 minutes. Add the garlic and cook for another 2 minutes until fragrant. Tip: if you notice that certain spots in the pot are browning too quickly, add a little bit of broth and scrape the brown bits using a wooden spoon.
Add the thyme leaves and the smoked paprika, stirring. Add the flour and stir to coat for a few seconds. Then, gradually add the chicken broth, breaking up any lumps and scraping the brown bits from the pot using a wooden spoon (this will release tons of flavor).
Stir in the diced potatoes. Bring to a boil and then reduce heat to a simmer. If it is too thick, add some more broth (but remember you will later add heavy cream or half-and-half, which will help to thin it out a bit too). Cover with the lid, and simmer for 20-25 minutes or until the potatoes are tender, stirring occasionally.
Add the corn kernels and heavy cream (or half-and-half). Season with salt and pepper to taste. Bring it back to a boil and then reduce to a low simmer. Cover with the lid and simmer for 8-10 more minutes, stirring occasionally. If needed, add more broth or heavy cream until desired consistency.
Cut the cooked bacon into smaller pieces. Stir the bacon bits into the soup, leaving some behind for garnish. Season with more salt and pepper to taste if desired.
Garnish with the remaining bacon bits, as well as parsley or chives. Enjoy!