How does BIP9 handle expiration dates over retargeting periods?
As per BIP 9, the transition to FAILED takes precendence. Which means that the feature will not be activated via BIP09.
The relevant part of the code.

case STARTED: 
            if (GetMedianTimePast(block.parent) &gt;= timeout) {
                return FAILED;
            }
            int count = 0;
            walk = block;
            for (i = 0; i &lt; 2016; i++) {
...