There is an upper bound to how much stuff people will tolerate in a license. If you add even one restriction too many, people will stop using the software at all. If possible, people may fork an older version of the software; if not possible, people will switch to something else, or perhaps start their own project with a different license.
For an example from history, look at what happened to XFree86 when they changed the terms of their license. Pretty much overnight, almost everyone stopped using XFree86 and switched to the then-new X.org project. I'm sure that the XFree86 guys thought that the world would just accept the changes to the license, but that's not what happened; what happened instead is that XFree86 became instantly irrelevant.
So, if RMS takes your advice and adopts the restrictions you propose, some nonzero number of users will fall away, and new forks will begin to appear of the software. Meanwhile the military users will shrug and just deal with it. There is exactly zero chance that your proposed GPLv4 will change the plans of the military, even a little bit.
So now the question becomes: what are you trying to accomplish with your proposed GPLv4? If the benefits outweigh the costs, do it. But do it with full knowledge that there will be costs, and among the costs will be increased fragmentation of open-source software projects (more forks and more new projects).
A CNC machine or a 3D printer can be used to make medical parts, or weapons. It follows that if the military contributes code to control a CNC machine or 3D printer, the contributed code could be used for good purposes. One consequence of your proposed GPLv4 license: code under such a license would no longer receive contributions from the military. Is that part of what you wanted to achieve? I don't see this as a win, myself.