1. The reason for the 1 s timer is that the download and upload speed is calculated as dlValue - dlValueOld [values in bytes], and since we calculate the speed each second we get bytes/s directly. It should be possible to increase the timeout to some extent and calculate the speed as (dlValue - dlValueOld) / timeout. However, the timeout should not be too high since the average speed under e.g 1 min could be much lower than the peaks.
How about using Windows Management Instrumentation? I assume that it is able to provide some history data so you wouldn't have to using such high polling rate (polling is always bad, especially with media applications...).