A useful package

<< Statistics`DescriptiveStatistics`

Your matrices

m1 = {{-1, 2, 3}, {3, 8, 5}, {5, 1, -1}};

m2 = {{1, 2, -1}, {3, 9, 5}, {-1, 1, -1}};

m3 = {{-1, 2, 3}, {3, 8, 5}, {5, 1, -1}};

Putting them in a list

matlis  =  {{{-1, 2, 3}, {3, 8, 5}, {5, 1, -1}}, {{1, 
            2, -1}, {3, 9, 5}, {-1, 1, -1}}, {{-1, 2, 3}, {3, 
            8, 5}, {5, 1, -1}}}

Giving them names

Table[m[i] = matlis[[i]], {i, Length[matlis]}]

The zero function

zeroMat[mat_]  :=  
      Module[{positions, delmat, 
          zeromat}, 
positions  =   Position[
            mat, -1]; 
delmat  =  
          ReplacePart[mat, nodata, 
            positions]; 
zeromat  =  
          Map[If[# == nodata, nodata, , #  -  Max[Flatten[mat]]] &, 
            delmat, {2}]
]

Creating the zeroed matrices

I have put nodata in the locations which contained -1 in the original matrix.

zeroMatlis  = Map[zeroMat[#] &, matlis]

A useful list

nodatlis  =  Table[nodata, {i, Length[matlis]}]

Here is the function to make the average matrix

finMat  = 
      Map[If[#  =!=  nodatlis, Mean[Select[#, NumberQ]], A] &, 
        MapThread[List, zeroMatlis, 2], {2}]

Counting the nodata entries

finalct  =  Count[finMat, A, 2]

precount  = 
      Apply[Plus,  Map[Count[#, nodata, 2] &, zeroMatlis]]