A non-listening node contributes by relaying transactions, and also helps with security making sure that violations of the rules are ignored.
As far as I know and have observed using traffic analysis tools, non-listening node is a full member of the network. The only thing it can't do is sync up nodes that want to connect to it but again it can sync up nodes that it connects to. Run your node and use
getrawmempool command at Console, you'll see unconfirmed transactions listed there. Node is collecting them for itself and to relay them to nodes that does not have some of those transactions in their own mempool, exactly what any sort of full node is doing. If your download and upload values are like 900MB and 2MB that just means your node is receiving new data slower than nodes it is connected to so other nodes are not often requesting such data from your node.
Each node on it's own is a clueless, it needs other nodes to create a consensus but it makes no difference if those other nodes will connect to your node or your node will connect to them so the whole story that non-listening, low upload nodes are less useful is false.
Also keep in mind bitnodes collected data can be easily skewed up or down. I know IP they are using so I can firewall it or I can create a hundred dummy full nodes that will all look like full nodes to outside observer.