Just in case it helps anyone else with this problem, Greg's tips got me on the right path, and I'll explain the change below.
InfoPath apparently expects an element with a certain namespace specified somewhere in the schema, or it will gray out the option to sign forms. It reminds me of what you have to put in your schema if you want to have a rich text field (similar to below, only with a different namespace). This is what I ended up adding:
<xs:element name="signatures1">
<xs:complexType>
<xs:sequence>
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="http://www.w3.org/2000/09/xmldsig#" processContents="lax"/>
</xs:any>
</xs:sequence>
</xs:complexType>
</xs:element>
Then, ref in this element somehwere in your schema.
<xs:element ref="signatures1"/>
The signatures node cannot be optional (i.e. don't set minOccurs).
It kind of makes sense that it's greyed out if you've built the form based on a schema. InfoPath doesn't let itself change the schema in this mode, so it can't add this node it needs to store signatures in.
Thanks for the tip, Greg -- I copied this out of a blank form with signatures added like you said.