I'm quite new to this whole SE universe, so either my comments are uneducated, and therefore serve no value, or they are fresh eyes and could be helpfull. So, here goes...
I think a link, answer, comment, or elsewhere, that is "affiliated" should be disclosed as such. If it meets the points set by terdon's answer, and it isn't disclosed, maybe a moderator could edit it to show that disclosure, and sent a note to the author reminding them to disclose in the future. Repeated failure to disclose, after being reminded, could be interpreted as intentional, with proper measures taken.
This may entail to much work for moderators. (I did say "universe" didn't I?) However; if such edits and notices are possible by members with high enough rep, then it may not be such a monumental task. I think that's how this place works anyway.
As Jefromi said,
it's not a large burden: "from my site: [link]" isn't much harder to write
so it's not much of an edit either.
I suspect that if someone is doing it flagrantly, they will limit there activities to an area small enough that others who frequent the same area will notice it quickly, and can flag them or notify someone else higher up the chain.
Bottom line, curtail abuse without punishing lapses and/or removing content which may be useful for others.