Place the water in a large 6- to 8-quart stockpot along with the salt, sugar, pink salt, cinnamon stick, mustard seeds, peppercorns, cloves, allspice, juniper berries, bay leaves, and ginger. Cook over high heat until the salt and sugar have dissolved.
Remove from the heat and add the ice, stirring until the ice has melted. If necessary, place the brine into the refrigerator until it reaches a temperature of 45°F. Once it has cooled, place the brisket in a 2-gallon zip-top bag and add the brine. Seal and lay flat inside a leak-proof container, cover, and refrigerate for 5 days. Check daily to make sure the beef is completely submerged and stir the brine. I like to flip the bag and give the brine a quick massage every day, but that's just me...
After 5 to 10 days, remove from the brine and rinse well under cool water.
For slow cooker: Place the brisket into a large slow cooker, add the onion, carrot, and celery, and cover with 1 inch of water, about 2 quarts. Cover and cook on high for 8 hours.
For stovetop: Place the brisket into a large pot, add the onion, carrot, and celery, and cover with 1 inch of water, about 2 quarts. Set over high heat and bring to a boil. Reduce heat to low, cover, and gently simmer for 2 1/2 to 3 hours, or until the meat is fork tender.
Remove from the pot and thinly slice across the grain. Serve on toasted rye bread or in corned beef and cabbage. Store any uncut leftovers in the cooking liquid.