You might want to think of more object-oriented ways to do these, as they are much cleaner and more efficient:
Tileset: Make a tile class with a Texture2D field. when you first read the map file, set the texture2D to the source data from the rectangle determined by your method from the tileset. Then, whenever you want to draw the tile, just draw the Texture2D that it contains.
Collision: What you really want to do is just check the tiles immediately around the character for collisions, not every single tile on the map. lets say your character is represented by the 8s and the tiles represented by 0s (passable) and 1s (solid):
0 0 0 0 0 0 0
0 0 1 0 0 0 0
0 0 8 8 0 0 0
0 1 8 8 0 0 0
0 1 1 0 0 0 0
0 0 0 0 0 0 0
You just need to get the coordinate of the 4 corners of the character area ((x1,y1)(x1,y2)(x2,y1)(x2,y2)) and then loop through the tiles corresponding to that area (int i = x1; i <=x2; i++) (int j = y1; j <=y2; j++).
Also, if you need a good reference for the ideas behind this stuff, there's a flash based reference that I found really useful a while back:
http://www.tonypa.pri.ee/tbw/start.html It's not quite the same as XNA, but it has some good ideas.