Instead of breaking up the tileset in individual tile textures you should keep a list of rectangles that make up the tiles.
The Draw function has a source rectangle parameter that cuts out the part of the larger texture for you to use. 
So instead of a `List<Texture2d>()` use a `List<Rectangle>()` and have the SpriteBatch.Draw() use the source texture and rectangle as parameters.

The main advantages here are: 

 - Rectangles take up less resources (you could use a tile class that holds more tile properties than just the rectangle).
 - Performance wise the tileset works as an sprite-atlas: this greatly reduces the required number of draw calls on your GPU because there is less texture switching required (all draw calls that use the same texture can be bundled).

Generally speaking there are very, very few reasons to split up a tileset in indivisual bitmaps and generally shouldn't be done. 
You'll notice that many games use sprite atlasses (or even generate them from individual sprites) instead of breaking them back up to separate bitmaps.

See also: 

 - http://gamedev.stackexchange.com/questions/7069/2d-graphics-why-use-spritesheets
 - https://en.wikipedia.org/wiki/Texture_atlas 
 - And the reason thesetools exist: https://www.codeandweb.com/texturepacker

Especially tilemaps benefit greatly from having everything in one texture. Learn about atlasses and how to use them, it probably solves your problem.