Just for the record, while I do agree that this is a rare and unusual setup, it is nevertheless a perfectly valid one and there's no reason for it not to be supported.
Also, I just checked both the source and the actual behavior of the ifupdown package in 16.04 and it's fine - the locking of the parent interface is done in the do_interface() function and it's unlocked at the end.
Just for the record, while I do agree that this is a rare and unusual setup, it is nevertheless a perfectly valid one and there's no reason for it not to be supported.
Also, I just checked both the source and the actual behavior of the ifupdown package in 16.04 and it's fine - the locking of the parent interface is done in the do_interface() function and it's unlocked at the end.
Best regards,
Peter