Is it ever a good idea to denormalize for integrity?
You are getting at something that is missing from standard normalization discussions, namely the constraint dependencies.  In general wider tables provide greater possibilities here than narrower tables.  So my view is that the sorts of questions you are asking in fact highlight good reasons to denormalize.  I would go with your first solution (the one you are leaning towards right now).

In my view good database design generally normalizes as far as possible but ensures that all columns necessary for proper data constraints are included.  You can do some of this with composite foreign keys if you don't mind adding additional unique constraints on the parent tables.  Leveraging data constraints an important part of database design and one should not sacrifice that for the sake of normalization that looks good in theory.