1. Откуда Вы взяли про смещение рисунка заливки? Вы в одной системе координат рисуете. Не будете смещать с помощью Matrix — никто никуда и не сместится. Вы думаете, после moveTo или после объявления beginBitmapFill точка привязки заливки меняется?)) Нет. Заливка привязана к точке отсчета координат и сместить ее можно только матрицей, передаваемой в GraphicsBitmapFill или beginBitmapFill().
2. Еще раз... Не зацикливайтесь на своей конкретике. Обратитесь к Справке, там все есть. Включите логику, а не эмоции. Графикс содержит слои на низком уровне. Это можно увидеть, нарисовав несколько фигур с заливкой поверх друг друга и поставив среднюю прозрачность спрайту/шейпу. Вы увидите все фигуры полностью, потому что к каждой будет применена альфа отдельно как к самостоятельной фигуре, и будет наложение отдельных прозрачностей. В одном единственном спрайте/шейпе. Каждый контур это отдельный "слой" графикса. Пока Вы не закрыли заливку, Вы рисуете на одном таком "слое". И все пересечения контура будут обрабатываться в соответствии с правилом
виндинга ("форточек"). Вы это правило не устанавливали, а по умолчанию оно делает дырки)). Так что

Код AS3:
path.winding = GraphicsPathWinding.NON_ZERO;
..и будет Вам счастье.
Но без
дырок отверстий.