If the most significant delay is during the web request, then doing an AsyncGetToString would allow you to continue processing messages/events. If the delay is more during the actual Parse(), then that won't help, since there's no way to asynchronously parse an XML string.
As for handling video selections during the AsyncGet, you can call AsyncCancel to kill the web request, and process the selection event. You'll just need to keep track of any rows that haven't completed loading, so you can continue with the load when the user returns to that screen.
Also, it probably goes without saying, but just to be safe, you want to make sure the port you're listening to is the same for both the screen and the roUrlTransfer object.
My Channels: http://roku.permanence.com - Twitter: @TheEndlessDev
Instant Watch Browser (NetflixIWB), Aquarium Screensaver (AQUARIUM), Clever Clocks Screensaver (CLEVERCLOCKS), iTunes Podcasts (ITPC), My Channels (MYCHANNELS)