My difficulty is this: I don't want to force every single one of these nodes to buy their own ssl, but I still need the requests to be encrypted.
Join a root program, like [formally called] GeoRoot. These root programs let you become a subordinate CA so you can issue certificates for domains and subdomains that you have administrative control.
Or, point your users to CAcert or StartSSL. Both issue Class 1 end entity certificates for free. Their certificates are trusted in most desktop and mobile browsers. They charge for revocation because that's where the cost lies.
Would self-signed certificates work for this situation?
No. Browsers have moved against self signed certificates.
Related, browsers of full of these subordinate roots issued to organizations. The problem is the CA's usually certify the organizational subordinate without name constraints. The independent 3rd party auditor was removed (the RA), and the complimentary security control (name constraints) was not used. So an organization like yours could issue certificates for any domain, and not just the ones you administer. (The "inmates are running the asylum" comes to mind).
An example of such a CA is GeoTrust. An example of an unconstrained subordinate issued to an organization is Google Internet Authority G2.
A related question on Information Security Stack Exchange: Should name constraints be present on a subordinate CA issued to an organization?
And the IETF's position in the PKIX working group (bad idea): How to handle organizational subordinate CA's when I want to stop the flow of trust?.
And the IETF's position in the DBOUND working group (bad idea): Another use case to consider....
Only the CA's and Browsers think unconstrained subordinate CAs issued to an organization are a good idea.