You should only ever need to store two object states, the 'previous' and the 'current'. Where the 'previous' is the last concrete snapshot taken from the server and the 'current' is the extrapolated local calculation. You don't go into details about what is contained in your state information, but I would recommend a flat array of structures rather than a list of objects. Structs in c-sharp are value types and thus should be a lot less heavy on the garbage collector.
 pretty much what hplus says above.