Peel the potatoes and chop them into 1-inch / 2. 5 cm cubes.
Place them in a large pot or Dutch oven and add just enough lightly salted water to cover them.
Bring to a boil and cook until fork-tender, about 15-20 minutes.
Do not drain the potatoes; set the pot aside with the potatoes in their cooking water.
While the potatoes cook, melt 3 tablespoons (45 ml / 1.5 fl oz) of the butter in a large, deep skillet over medium heat.
Add the thinly sliced onions and the bay leaves.
Sauté, stirring frequently, for 10-15 minutes, until the onions are soft, sweet, and just beginning to turn a beautiful golden brown.
Stir the crushed dill seeds into the onions and cook for one minute more until fragrant. Carefully pour the cooked potatoes along with all their starchy cooking water into the skillet with the onions.
Stir gently to combine.
In a separate small, heavy-bottomed saucepan, melt the remaining 2 tablespoons (30 ml / 1 fl oz) of butter over low heat.
Whisk in the flour to form a paste (a roux) and cook for 1-2 minutes, stirring constantly.
Meanwhile, gently heat the milk in another saucepan or in the microwave until warm (not boiling).
Gradually pour the warm milk into the roux, whisking constantly to prevent any lumps from forming.
Continue to cook and whisk until the sauce thickens into a smooth béchamel, about 3-5 minutes.
Pour this creamy sauce into the potato and onion mixture and stir to combine.
Reduce the heat to low. Begin adding the grated Gouda cheese to the soup, a handful at a time, stirring slowly and constantly until each addition is fully melted and incorporated before adding the next. This ensures a smooth, non-grainy texture.
Once all the cheese is melted, stir in the paprika and vegetarian Worcestershire sauce.
Season generously with salt and pepper to your liking. Allow the soup to gently simmer over the lowest possible heat for at least 15 minutes, stirring occasionally, to let the flavors meld together.
Remove the bay leaves before serving hot.