I think it would be useful to distinguish between well-intentioned but off-topic questions and those meant to promote a service or advertise a particular product. Is there a way to give advertising its own radio button in the "close" menu?
The flag list includes spam. I think flags are reserved for poor behavior -- there's a qualitative difference between someone who asks a bad question with good intention and someone who's trying to abuse the system, as you note.
You should flag spam, not vote to close.
You have a limited number of close votes, don't use them up on spam.
A mod will come and delete things that are flagged and need deleting.