The chipy sounds I believe is due to seeking, which is done out of necessity. And it bugs the shit out of me.

A little explanation as to why the app has all these issues. Android's MediaPlayer class does not support infinite streams. If it's an mp3 on a site, with a fixed size, it can stream that, but shoutcast and internet radio in general, it won't accept. So in order to get the stream to play, I've done the following:
1) Download about 10 secs worth of audio to a buffer file.
2) Copy the buffer file to a new temp file, and feed it to the MediaPlayer.
3) The download continues into the buffer file
4) When that MediaPlayer reaches the end of the stream, it calls a callback that goes back to step 2, and then seeks to the position is ended at before.
So as you can see, there's a lot of odd stuff being done to play this stream, and it's causing glitches and timing errors.
One possible solution would be to use AudioTrack class, which will play from raw PCM bytes in memory. So I could download, decode, and create a FIFO of PCM bytes, ensuring smooth playback unless there's buffering issues, but I can monitor the FIFO contents to handle that. The biggest problem I see is technically I believe I'd have to pay royalties to decode MP3s in my own software (using libmad, which would be fast enough).
Edit:
Okay, real problem is in the damn metadata parsing! So that means I can disable episode name for better audio quality, until I add another method (maybe scrape the status page?) or debug what in the metadata code is causing blips and glitches.