Yes it does explain a lot, thank you very much @albanD!
I was implicitly assuming that df/dW_last are the same for all the three instances because the weights are identical. It is not the case; the derivatives are input-dependent. So instead of having a weighted sum of the 3 grads, I was getting Const * the sum of grads (which is 0).