That is the problem with positive punishment - particularly with "headstrong" dogs - because barking is SO self-rewarding, most punishment is worth putting up with or figuring out how to avoid... For example, you've got the can so she barks in the other room or when she knows you don't have it (maybe at bedtime or while you're showering). With regards to the citronella collar, its not something I like - aside from potential equipment failure my friend's not so bright Lab figured out how to get the spray part on the back of his neck so it wasn't spraying his face
Relying on keeping her mouth shut with your hands isn't getting you anywhere (unless you are simultaneously teaching a "quiet" command and fading the physical cue NOW). Once again it requires close proximity and could ultimately result in a dog who barks away from you, eludes you or even becomes headshy (and I am not saying out of fear, just out of avoidance or in anticipation of her mouth being held shut).
Boredom tends to be the most common reason dogs bark - dogs need both physical and mental stimulation - a 5km walk is wonderful (assuming its a daily occurence and not just an occasional walk should mean that most of her physical needs are met but given her breed, its possible she needs more LOL) She also needs mental stimulation in the form of training, interactive toys and find it games.
Assuming that its not boredom, I would suggest that the first thing you change is her barking to go out. Instead teach her to go silently to the door or ring a bell etc... Some dogs need things to be black and white (ie:no barking period unless its a genuine alert bark) but also, since you are having trouble distinguishing a potty bark from a boredom/attention seeking bark, you need to eliminate that confusion (so you aren't rewarding her even more by reacting to the barking and letting her out when she doesn't really need to go).
You also need to start anticipating her - if she gets up, roams around and then starts barking - you need to stop her as she is getting up - not wait until she is already self-rewarding. I guarantee she is giving off signs before she gets to the point of barking - you just need to recognize them and redirect her.
Teaching her to bark on command, like someone else suggested is also a good idea if you do it right (and teach her that unless you ask for a bark, then she doesn't offer it on her own)...
Something else I would do is build value for a mat or bed and each time she is about to start barking you send her over to her place and reward. Release and possibly run through a few other behaviours and send her back etc....
A good command to teach is a "touch" (ie: target my hand) because it gives your dog a rewardable behaviour and it redirects her towards you.
All of my dogs have an "enough" command which means stop what you are doing NOW; they also have a "go lie down" command which means get comfortable wherever you want and don't be a bug (it isn't a stay, they are free to move farther away but they are not free to come back and be a bug in my space). When they alert bark, I acknowledge and if necessary ask them to stop - but most often, the acknowledgement itself is the cue that I can handle things now. I have never had a barking problem (and I've owned dogs that LIKE the sound of their voice)