I have a static hs for the node (and so I have -listenonion=0), and I got just 1 incoming connection that actually used the NETWORK service (also BLOOM and WITNESS, all other nodes were crawling nodes without any services). That was a stable long lasting connection, so maybe it's working...
Yes, if you get any incoming connections at all over Tor, it is working. You can verify that it's over Tor because the peer will appear to have the IP address of your Tor proxy server, with a random port. You can also telnet port 8333 of your hidden service (using torsocks) to verify that it is reachable.
But there are alot of debug messages like
Socks5() connect to <ip:port> failed: connection refused
...so it seems that there could be something in the config that's preventing the majority of peers connecting to the node.
I get that too. It doesn't seem to indicate a problem. Random connection failures seem normal for Tor.
Also, trying to use bind=<proxy IP> gives this fatal startup error:
Unable to bind to <proxy IP>:18333 on this computer (bind returned error Cannot assign requested address (99))
What is error 99?
It means you don't own that IP address. You're supposed to bind to one (or more) of your
own addresses, specifically the one specified in the HiddenServicePort entry in torrc. Note that this is only necessary if you need to avoid receiving incoming connections on your other addresses (in particular your public IP address, if you have one, which would compromise your anonymity).
Or, should I simply be expecting low numbers of incoming connections over tor?
I usually have at least 10 or so, but it seems to be normal for a new hidden service to not see many connections at first.