Thanks for the response.
Here's what I have so far: 
(That was all test data, so of course the stats, score and amount of shots don't match up. The tablet PC app is calculating most of the stats, so I'm just reading them in from XML instead of recalculating them all)
Currently, the Silverlight application resides outside of the Update Panel, because of course, it would be horrible to reload the Silverlight application every time. There are 2 separate update panels on the page: one before the Silverlight control and after, but they both use the same 15-second timer as a trigger to update.
I'm using 2 separate, simultaneous 15 second timers; one in Silverlight and one in ASP.NET AJAX. If I get time, I'd like to switch all of that over to using the Silverlight timer and calling JavaScript from managed code, like you described. 2 different timers definitely feels like a hack to me.
I ended up using a .aspx file to parse the XML on the server and am sending the response to Silverlight via JSON. I'm using the built-in JSON deserialization to turn the JSON into a List of Shot objects, with things like the X/Y coordinates, point value, player, team, etc. as members of that class. LINQ to XML would probably be better since you could go directly from the XML to Shot objects, but after reading around 200 different Silverlight pages with tutorials and watching around 20 videos, my head was swimming. =P It's also really confusing when around 3/4 of the tutorials are in Silverlight 1.0 and it's not always clear to someone who's brand new to Silverlight how to move them over to 2. That being said, I really do appreciate those of you who are pumping out the tutorials and videos. They can really help when some of the other documentation feels disjointed or unfinished.
After that, I'm maintaining a few Dictionary<Int32, Shot> for constant-time access and keeping the Shot ID integer as the key. This way, I can keep a list of all of the currentShots, a list of the newShots that need to be added to the canvas one at a time with a time delay, and the list of tempShots that have come in from JSON that I need to compare to the currentShots to see which need to be removed, updated, and added. That also allowed me to keep a dictionary of <Int32, Image> which holds all of the current Images on the canvas. I add the image to the Canvas and that dictionary at the same time (with the Image Tag describing the shot, something like "PlayerName missed a shot from 25 feet") then if a shot gets removed I can access it via that dictionary to switch the visibility, then remove it from the dictionary since to me it's "removed". I'm assuming if I had used LINQ to XML, updates, adds, and removes could be handled automatically somehow with databinding, correct? I can easily see how that would be handled with a ListBox, but with what I was doing with absolutely positioned Images for shots, it isn't as clear to me. (Unless the custom DataTemplate would allow for me to do exactly what I did using a ListBox) I'd probably need some sort of custom control to databind to at that point, which would probably be the same amount of work or more than the way I ended up doing it.
The last thing I'd like to do is add DropdownLists to the HTML/.aspx page that would access the managed code using JavaScript and allow people to filter the shots by player, period, and hit/miss once the game is over. (The game also allows you to play through the game in order once the game is finished, accessed by the "Game Playback" button in the linked picture) I just haven't had a chance to wrap my head around LINQ and the managed code/JavaScript bridges yet.