I played around with this a bit more today and continue to be really puzzled by the whole thing.
I have been using ushare (open source server similar in function to Twonky) to experiment with some of the settings. ushare exhibits exactly the same behavior on my system where almost all songs play very slowly. The only exceptions are songs that have a really low bitrate (64kbps)
I had ushare print the size of the requests coming from the HR20 along with the number of bytes that the server is returning. Irrespective of the song bitrate, the HR20 requests just over 1MB every 10-15 seconds. While I wasn't able to do any sort of controlled experiment, the request rated did not seem to change when I varied the load on my network.
I hacked ushare so that it returned 1/2 the requested number of bytes and then hacked it again so that it returned 2x the request. So, the HR20 would request 1MB and ushare would return 512KB in one experiment and 2MB in the other experiment. I was pretty surprised that this didn't break the HR20 playback, but it didn't. And, to my surprise, it didn't make any difference at all in the playback - it still sounded slow. Wow.
I also pulled down a 3rd party wav editor and played back some of the wav files that Lame decoded. As with WMP, this editor played back the wav files at normal speed. Those experiments aren't totally conclusive as the HR20 only plays back wav files with the headers removed and the other programs require the headers.
I poked a bit at Twonky to see if the UPnP library is common with ushare. As far as I can tell, Twonky uses a totally independent library. So, it is unlikely that ushare and Twonky exhibit the same behavior because a bug in the underlying library.
I think the biggest mystery is that Twonky works just fine for some people and for others, the playback is just broken (plays slow). There's got to be something obvious here.....