It is quite possible he is suffering from soap contamination. Soap leaves a residue on surfaces, even after it is rinsed off. Soap is toxic to fish. Between the objects going into the dishwasher and the marbles being washed in soap, long term contamination like that will cause internal damage and eventually a slow death.
It is also quite possible that he is getting old. Most bettas found in the stores are already at least 1 yr old. Average life span for a betta is about 3 - 4 yrs. At 2 - 3 yrs old, add in the soap contamination, and maybe his body just can't function anymore.
There is one thing safe that you could try. I use this as a preventive for all new bettas the first 2 wks I have them home, to take care of anything fungal or bacterial that might be there yet unseen by us. Get yourself a bucket, mehtylene blue, and fungus eliminator. Mix the meds together into a bucket of tap water according to directions on the packaging. The water will turn a deep aqua color. Mix it well with a net for a few minutes, then let it stand for 3 - 4 minutes, and mix again. Once everything is ready, replace 100% of the water in the bowl/tank with the medicated water. Make sure the water is about the same temp, so you don't shock the fish. If you let the bucket of water stand for a few hours before adding the meds that should be enough. Feed him once/day but no more... 3 - 5 pellets, live black worms, brine shrimp, whatever food he is used to eating and any others you can provide. 1 type of food per feeding, and do 100% water change with medicated water for 7 days. The medicated water in the bucket is good for 2 water changes, then needs to be remixed fresh.
If your fish is suffering from stress, bacterial, fungal infection, etc., this routine should have him up and swimming around within 7 - 10 days. This treatment won't harm him if he doesn't have any of those problems, and could help to boost his immune system to fight whatever the problem really is. I doubt the problem is paracite based due to your description of his symptoms and care.
Oh, and before I forget... get rid of anything that has been contaminated by soap. You're better off replacing it all! In the future, plain water should be enough to clean anything that needs it. If not, bleach is the only cleaner that is safe to use. 1 cup of bleach to a gallon of water, temp unimportant. Rinse very very well, until all odor of bleach is gone, then let air dry for 48 hrs. Rinse again, making sure no odor of bleach is present. If you still smell bleach, repeat thoroughly rinsing and drying for 48 hrs. Continue until there is no smell of bleach when you rinse it after having been dry for 48 hrs. Bleach is the only cleaner that will completely evaporate without leaving a residue, but it has to be air dried for that to happen.
Let me know if you need more help and keep us posted!