What data structure should I use to model a Blockchain
First, a blockchain is it's own data structure.  It's best to think of it as one.  It represents a way to organize data in which desirable properties are gained.  However, that still does not explain how to hold one in memory/storage.

In Bitcoin, the blockchain is stored on disk (not memory) using leveldb.  This is a key/value database where the keys are the block hashes and the values are the blocks.

For an in-memory equivalent, a hash map is what you are looking for.  This is a data structure where the key is a hash of the contents (such as a block header).  From there, the header's Merkel root would point to another hash map of transactions arranged in a Merkle tree (as per the protocol).

However, an in-memory solution (which seems to be what you are after) is a terrible solution for a blockchain.  The data simply grows too quickly.  You will want to store the data to disk and have a fast way to query it.  This is why Bitcoin uses an existing database such as leveldb.