these 12gb represent all the block headers as well as all unspent transactions. The Satoshi/original client no longer saves spent transaction details so at least it is not as large as it could be

This is untrue. The reference client saves the raw blockchain on disk, which contain all blocks and therefore all transactions. Some orphan blocks are saved too, since the program doesn't learn they are orphans until too late. However it doesn't keep an
index into transactions, which means you can't ask your client about arbitrary transactionsbut they exist on disk nevertheless. The parameter -txindex controls this indexing and is 0 by default.
Oh! I must have misread something in my research but upon further inspection it seems you are very right.