Your example (2) is of an embedded declarative clause (as assigned)
not a relative clause (as you call it).

You're right to feel that adding a feature is 'hacky' -- in general,
we try to reuse features as much as possible, and tend to opt for
adding types, rather than features, when there is an option.  You
could consider cross-classifying your subtypes of head, and using
that…

I think the heart of the problem in your embedded clauses is that
you're trying to add some semantics through C-CONT.  In the case of
the embedded questions, it's the lexical item which adds the message
(and can lexically specify the relationship between its CONT..MARG and
its COMPS..LTOP).  In the case of the embedded propositions, your
head-subj rule should already be doing all the work.  The
complementizer doesn't need to make a semantic contribution.

Everytime you put [MARG #foo] on a RELS list somewhere, that's another
message that will end up on the final semantics.
