@Joris: I understand that your question relates to understanding the concept of a Blockchain in relation to Smart Contracts at "runtime". A good question that kept me busy for a while.
There is no such thing as a Singleton. Singletons are a concept of other programming languages with a local address space. A Blockchain is distributed.
As Tjaden said, each contract is defined by an address. Lets call it an instance for the sake of OO-language concepts.
Each time you change the state of that particular instance, your winning miner will put a newer copy in the newest Block. You always interact with the topmost entry that is represented by the address. Older copies stay where they are but ignored. Thus you have a "chain" of serialized entries but only one contract instance.
You are free to create new contract instancies of the same type. That instance will have another address.
Once a Block has been mined, it is immutable. Your first and any other instance will be permafrosted forever by your miner. You interact with the topmost. Any new state goes on top.