I think there is no problem and you do not need to load the $model again.

Sequence is following:

    _beforeSave()

    save() //model in not saved!!!

    _afterSAve() //model is still not saved!!!

    on afterSave dispatching some events such as 
        Mage::dispatchEvent('model_save_after', array('object'=>$this));
        Mage::dispatchEvent($this->_eventPrefix.'_save_after', $this->_getEventData());

    commit() And only now magento save changes to database 

So you evend don't need to use method _afterSave() you can use one of events with following check:

    if ($observer->getObject instanceof My_Module_Model_Price) {

**upd.1**
You have some non logical things. For example you named method getPrice(). In this method you need to receive smth. In your case better use name: applyPriceRanges(). And code for this method is following:

    $this->setData('current_price', $this->getSpecialPrice())->setData( /* .... */ )->save()

and in _afterSave() method or in observer try to do your changes with your object.