In the case of /.play, the '.' suppresses the status messages of /play starting and stopping, much like the messages of /timer starting and stopping. Similarly, using /.timer doesn't hide the actual /msg's or /notice's sent by it. These are the origins of /play.
A work-around solution, use the -a switch, and specify .msg for the alias. Example:
.play -a .msg $nick banner.txt 250
This will hide both the activity of /play starting and stopping, as well as the /msg output. Enjoy!