I often hear a similar sentence自分にご褒美をあげたいhere in Japan. It is often used after you did some hard effort to achieve something. The subject私は is omitted mostly. Also, I haven’t seen プレゼント so much in the sentence. So, it might be good to think it as a kind of idiomatic sentence. Honestly speaking, it seems to me that the Japanese sentences in question are more or less strange. So, firstly, I’ll start with 自分にご褒美をあげたい.
ご褒美is, in my impression, commonly used for a rewarding gift from an authority to a person, from a parent to a child, etc., and with respect. It means an important gift, different from a present in a casual occasion. Therefore, it might sound strange to give such formal gift to self. Some people might say the expression is a little strange.
But I would put it this way. たいmeans ‘I could do.’ The basic meaning of the sentence is ‘I could give ご褒美 to myself (after this big achievement, etc.)’. The sentence might be wrong in a strict way, but figuratively or subjunctively correct. The subject of the sentence might be an imaginable ‘I’ who might be an authoritative person in a subjunctive world. The great ‘I’ gave ご褒美 to real ‘me’. So, this sentence works to emphasize great satisfaction to self. Well, of course, some people actually buy something good to themselves. If you buy a new car, you might say この車は自分へのご褒美です。自分へのご褒美is a noun form.
By the way, I hear less 自分にご褒美をあげたthan 自分にご褒美をあげたい or 自分へのご褒美. This might prove that Japanese people feel something wrong with using straightforward あげた to talk about giving something to themselves, because あげたis a politer word. But using あげたin this sentence might be acceptable, when we remember the sentence is basically subjunctive one. An imaginable great ‘I’ agrees with the word あげた. I hope this is an answer to your あげる、くれるquestion, though it might be confusing.
It might be good to think 自分にご褒美をあげたis derived from 自分にご褒美をあげたい, the basic form. When you achieve something, you will say 自分にご褒美をあげたい. After that, if you buy something for yourself, you will naturally want to say that 自分にご褒美をあげた. The subjunctive world turned to be real.
Now, I’ll try to answer the rest of your question. I’m not a grammar specialist, so my judge depends on whether it sounds natural to me. Besides, as I said earlier, I can’t imagine the situation to say 自分にプレゼントをあげた. So, I would stick to ご褒美.
- 私は私にプレゼントをあげた → （私は）自分にご褒美をあげた (though あげたsounds a little strange to me.)
- 僕は僕にプレゼントをあげた → （僕は）自分にご褒美をあげた (ditto)
- 私は自分にプレゼントをあげた → （私は）自分にご褒美をあげた (ditto)
- 私は自身にプレゼントをあげた → incorrect (In most cases, 自身needs another word)
- 私は自分自身にプレゼントをあげた → 私は自分自身にご褒美をあげた (ditto)
- ボブはボブにプレゼントをあげた → ボブは自分にご褒美をあげた(I think あげたsounds a little strange but some people don’t think so. This may be more acceptable because the speaker isn’t the subject.)
- ボブはボブ自分にプレゼントをあげた → incorrect （if you say ボブ自身, it’s acceptable.）
- ボブは自分自身にプレゼントをあげた → ボブは自分自身にご褒美をあげた(I think あげたsounds a little strange but some people don’t think so. This may be more acceptable because the speaker isn’t the subject.)