These are good questions. I did not find any Pulse options which could achieve what you are looking for straight OOTB.
So I think a custom solution is going to be necessary here. Both options you mentioned sound technically viable.
If you use a custom edit validate you could replace words you find inappropriate with other characters. Or if you want to put in a validation to prevent such a post, I think you could wrap the OOTB pzAddFeedPost activity call with your own activity which would not call pzAddFeedPost in the event an inappropriate post is attempted.
Just like with many things in Pega or development, there are many different ways to achieve a requirement with pros/cons for each approach.