На события OnIblockelementAdd и/или OnIblockElementUpdate повесить обработчик, в котором и добавлять watermark на загружаемое изображение, например с помощью метода ResizeImageFile().
Во-вторых, добавлю от себя то, что не указано в документации: чтобы добавить новый файл при этом не удалив старые - используйте метод CIBlockElement::SetPropertyValueCode, а не CIBlockElement::SetPropertyValuesEx
В header и footer лучше обойтись без if-ов. Лучше сделать:
1) Разные шаблоны для разных страниц (например, один для главной страницы, другой - для внутренних)
2) Использовать включаемые области.