Какой самый правильный способ сделать фиксированный оверлей в safari ios?
А почему нельзя position:fixed ?
Блоки Fixed видимо идут в потоке  - что и тянет за собой выше описанные проблемы.
Попробуй так JSfiddle, должно помочь. html,body {
    position:absolute;
    top:0;bottom:0;
    left:0;right:0;
    overflow:hidden;
}
body {
    overflow:auto;
}
.modal {
    position:fixed;
    top:0;bottom:0;
    left:0;right:0;
}ДОБАВЛЕНО:
Если создаешь модальное окно динамично, в модальной форме на любой елемент input добавь autofocus:<input id="yourtextbox" ... autofocus />
Если критично в .js запомни позицию скрола в нужных элементах, при автофокусировке скролы могут уехать куда вздумается. А если модальное есть в документе но спрятано, то в функции показа модального можно добавить:function setFocusToTextBox(){
    var textbox = document.getElementById("yourtextbox");
    textbox.focus();
    textbox.scrollIntoView();
}
А после закрития модального окна восстанови эти позиции.