You will not be able to (properly / 100%) disable commenting by using custom permissions. From an API and ACL / permission check perspective, there is nothing inherently different between adding a comment and adding a new file. The underlying operation only checks for the "AddChildren" / "CreateChildren" default permissions. Even if you were to implement a custom permission for "CreateComment", the underlying operation would not be granular enough to differentiate between different "CreateXY" use cases.
Furthermore, a permission called "DisableComments" does not make sense from a semantical point of view. Permissions are always allowances to perform something, so a permission should never be named in the negative. There should be a permission "CreateComment" which all users may have by default, but could be explicitly denied to others, to "disable" that functionality. Unfortunately, Alfresco Share (and I believe ADF / ACA / ADW as well) does not support negative permissions (which Alfresco core does support), so you could not really assign / revoke the permission in any meaningful way.
You could certainly hack something together which works using the negatively framed permission "DisableComments" and some behaviours, but it would not be a very "clean" solution. And you'd still need to customise the UI to actually disable / remove the default commenting controls in some way, since these will not check your negative permission, only the "CreateChildren" / "AddChildren" ones.
With regards to your custom permission model: You are defining a custom permission model for default Alfresco namespaces. Alfresco itself already provides a permission model for those, and I assume your configuration runs into conflict with this, causing weird side effects (the StackOverflowError), since I doubt Alfresco has put in place any special guards to avoid developers overriding their core permissions, which they clearly did not expect anyone to do that way. Typically, custom permission models can only be defined for custom content models / namespaces, and thus custom types and aspects.