I didn't look really deep, but I saw this in save():
$this->_beforeSave();
if ($this->_dataSaveAllowed) {
$this->_getResource()->save($this);
$this->_afterSave();
}
but there'sThere's no setter for $_dataSaveAllowed.
maybeMaybe extend the shipment model to add a setter for this attribute and set it to false in your observer?