There really aren't any rules for this, you can choose how you do it yourself. You're the asker after all!
When is it appropriate to select a BA?
Whenever you feel like your question is resolved. If the answer covers everything you wanted, then select it as the best answer. Of course, it's still up to you when you select it; there is no rule set in place regarding this. Some people like to wait a while and see if a better answer is posted.
It is proper etiquette to give one?
Yes, definitely. Good answers should be rewarded. As mentioned before, if it answers your question completely, go for it. However, please don't give them to one person repeatedly because you like them.
And is giving a BA to every question considered spam?
No, not really. I guess it's kind of annoying if you select answers to 20 of your questions at once (clogging the recent activity section), but this shouldn't be an issue if you don't wait ages to select an answer.