I am not sure how ZeroMQ can work from a node that is in blocks only mode. I haven’t researched it much, but it seems like the node would need to maintain full mempool or you would receive transactions more than once. We might be able to offer a cheaper solution that does not monitor for double spends and only responds to confirmed transactions, but our priority is 2 second acceptance of requests.
Spynode (embedded in smart-contract) is designed to watch for double spends so it needs to maintain connections with many nodes across the network and be instantly fed any new transactions from those nodes. This has a major benefit, but also a cost as you know.
Similar to anything in Bitcoin there needs to be a balance. You don’t host a smart-contract because you want to, unless you have money to burn, you host it because there is economic incentive to do so. If there is not enough revenue from hosting the smart-contract to at least offset the costs, then you probably shouldn’t. Keep in mind that the smart-contract agent has a built in fee collection system that requires a predefined fee be paid for each request to be accepted. This should be able to offset the costs of any successful contract.