You're right, we need the whole vector of outputs. I guess what I had in mind was having the labels in more compact form to save memory. 
How about doing this only in the cost, and not changing the fprop?
Anyways, if the difference wasn't huge, and since we only load a minibatch, this should do just fine. Then just make a new softmax class inherited from the mlp with prolixity  monitored in it.