Mira, lo importante a saber sobre los iFrames y Frames es que no debes indicarles el source hasta luego de que haya finalizado la carga del documento porque sino afectan considerablemente la performance de tu sitio web.
¿Como lo haces? Con javascript, el tag body de tu html debería verse así:
Código HTML:
Ver original<body onload='document.getElementById("id_de_tu_iframe").src ="tu_pagina.html">
Si haces esto, la velocidad de carga de tu sitio aumentará mucho debido a que los iframes son bloqueantes, la carga de una pagina html común se detiene cuando encuentra un iframe y, hasta que este no se termina de cargar, la carga de la pagina queda detenida.
En cuanto a alternativas, esto que tu mencionas es un problema típico de los sitios web estáticos y deberías considerar hacer un sitio dinámico (con PHP, por ejemplo).
PHP permite hacer include(). Por ejemplo: include('header.inc.php') o include('menu.inc.php')
De esta forma, puedes incluir dinamicamente el mismo contenido en más de una pagina (y te evitas tener que actualizar todas tus paginas cada vez que necesitas actualizar algo).
Luego de está explicación, respondo tus preguntas:
1.- Hay alternativa a los marcos (Frames), son los iFrames, pero tendrás los mismos problemas si no los utilizas bien, haz lo que te mencioné y no tendrás problemas.
2.- Considera hacer tu sitio en PHP y utilizar includes.