Turn off "Show streaming music in my collection" in Xbox Music, and reboot the phone. That is if you have a nice collection already on the phone.
I ran into this and figured out that the app defaults to the streaming music if it finds a match in your collection. But if you don't have a Gold account, it only plays 20-30 seconds of the streaming version of the song (sounds like a skip), then it might play the local version in full.