I think the answer is probably going to depend on contextual knowledge, a loss function should always reflect your problem as well as possible and is key to having good predictions (in the "real" sense, not based on an artifical measurements).
The only help I can offer is to state that in terms of computational complexity, it's probably going to be more efficient to implement your own loss function in terms of the sparsity (especially if your matrix is big, which I suspect is the case here). One particular candidate could be a "specialized" MAD, say something like:
$Loss(X,Y) = \sum_{i,j} |X_{i,j} - Y_{i,j}| $
This can be calculated very efficiently using sparse calculations (the example they give is for multiplication, but you can modify it accordingly).
EDIT: I didn't take into account the second part of your question. For the zero problem, @jmmcd's answer is probably a good suggestion.