I know that 子 can work as a diminutive suffix (small things have their smallness emphasized and a sense of intimacy may be indicated). Another use is as a nominal suffix, which I understand to be a pretty much meaningless syllable attached to monosyllabic nouns to make the disyllabic.
My issue here is that it doesn't seem to be applicable for various nouns. I can understand this in a situation where N (noun) and N子 have separate meanings, like 山 (mountain) and 山子 (rock garden) to avoid ambiguity. Other than that though, I don't see any reason why I can say both 竹 and 竹子 (both meaning bamboo) but I can only say 蛇, not 蛇子.
Is there any pattern to this? A group of concepts or types of nouns that can use 子 or a group of concepts that don't use it?