hanasemasen = can't speak
hanashimasen = don't speak
It's arguably more proper to say "nihongo ga hanasemasen" (I can't speak Japanese) than "nihongo wo hanashimasen" (I don't speak Japanese). The first is a statement of my personal abilities. The second could easily be a statement of my attitude. "nihongo ga hanasemasu kedo nihongo o hanshimasen" (I can speak Japanese but I don't speak Japanese)
For whatever reason I've never heard wakaremasen (can't understand) but only don't understand (wakarimasen).
I've honestly never heard anyone use ga before hanaseru. It's always been wo that I've heard.
I think it is very much like "was/were" in English. "If I was to give you a cookie..." / "If I were to give you a cookie..." "were" is "correct" (as though there is such a thing in English), I think, but "was" sounds fine. "Was" looks pretty abrasive in writing but say it out loud and you'll notice that you hear it a lot.
Now, I never realized... the interesting thing is both wakaru and wakareru use the same kanji: 分かる 分かれる (although there is also 解る or 判る for wakaru)
You assumed correctly :-) I thought that adding a "sen" suffix to any verb was the only way to negate it. Wakarimas = I understand. Wakarimasen = I don't understand. (Yes, I read Shogun :-) Japanese is apparently much more subtle than I realized.
One of my teachers explained to me that "wakaru" (to understand) already has the implicit meaning of "able to" in the word itself, so you should never use the potential form. Searches[1][2] for "分かる 可能形" seem to agree.
[1]: https://hinative.com/ja/questions/2884450
[2]: https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14...