I'm just getting started looking at bitcoin and it's protocol, so this might be an incredibly stupid question. Why does bitcoin have a separate concept of transactions? Wouldn't it be better for each block to have a bunch of inputs and a bunch of outputs without separating them as individual transactions? This way it's more anonymous and private, since anyone trying to track an public key is stopped since their transactions are mixed with hundreds of others?
I guess technically, you could do that right now, by making one transaction with hundreds of inputs and outputs and mining that. I'm not asking why transactions are propagated by the nodes, I'm asking why are they stored separately in the final blocks?