В отрицательную форму в ваших примерах будет ставиться глагол направленности действия.
猫に魚を買ってやりませんでした。 - Не купила рыбу для кошки.
姉にカメラをおくって上げませんでした。 - Не подарил сестре камеру.
Но, вообще, грамматически допустимы все три варианта, и все три имеют разное значение. Правда, к вашим примерам это плохо подходит, но например:
あの人は私を駅までおくってくれませんでした。
- Он не проводил меня до станции (Я бы не прочь чтобы меня проводили, но он, увы, не был добр чтобы меня проводить)
あの人は私を駅までおらないでくれました。 (ちょっとひねくれた文ですが…)
- Он (по моей просьбе, или просто проявив такт) не проводил меня до станции. Т.е. он обычно проводит, но он знает, что я не люблю когда меня проводит, и проявив такт, он специально, ради меня, отправил меня в одиночку.
Если рассматривать более естественные примеры, то мне в голову прежде всего приходит такое:
言ってくれました - сказал (мне, ради меня)
言ってくれませんでした - не сказал мне или ради меня (хотя я просил, чтобы сказал)
言わないでくれました - не сказал, ради меня (по моей просьбе, я просил не говорить)
言わないでくれませんでした - рассказал (я просил не говорить, а он эту просьбу не выполнил)