Although not being as explicit as possible, the following approach may make a transition from the existing implementation easier:
Based on what Hodgman has written above, but for cases where not the entire state vector is put into each DrawItem, a reasonable default setting can be defined (perhaps dependent on the active graphic pipeline stage). Any explicitly set state overrides its default equivalent, of course. From the low level renderer's point of view, each draw call then has an entire set of state.
In practice, at the beginning of the draw call processing, the default set of states is copied onto a local set of states. The state as available by DrawItem is then written "piecewise" onto the local set. Then the local set is compared with the state set that represents the current GPU state, and any difference cause a call to the render context as well as adapting the latter set accordingly.