For an explanation of why you were receiving Tweets containing "@ water" (with the space), see The CSDL Engine: How it Works. This explains how DataSift treats punctuation in Tweets.
If you need to search for both keywords and @usernames, you will need to distinguish between them in your CSDL like so:
twitter.mentions in "water, kpn, ladygaga, pepsi, sunbaseball" OR
twitter.text contains_any "Connecticut Huskies, Georgetown Hoyas, #funtime"
It is probably also worth noting that our operators such as 'in' and 'contains_any' work in different ways. Take a quick look at our Operators documentation for more info.
Bonus CSDL Tip:
When filtering for hashtags, if you include the '#' symbol in your CSDL filter, you will only match Tweets containing that exact hashtag. If you just include the hashtag text, but not the '#' symbol, you will match both the hastag and the text without the '#'. For example:
Tweet 1) "It's funtime"
Tweet 2) "It's #funtime"
This CSDL will match both Tweets:
twitter.text contains "funtime"
This CSDL will only match Tweet 2:
twitter.text contains "#funtime"