You're not going to get nearly as much gold (and the extended duration of unhappiness) if you choose to immediately raze the city. You can either risk future unhappiness or simply raze it as quickly as possible. As I said, a diplo penalty from other civs (similar to the city conquering/last city deal) would further serve to make it distinct from a standard razing.
Games like Civ are always about choices between options, and this is simply yet another choice, imo. Early benefit, long term benefit, or raze.
Going back to the original problem, we were discussing what to do with puppeting and annexing cities. It seems that in the current system it is always better to puppet than annex. This model of sacking seems to have the same problem, where in it's always better to sack then raze than to simply raze.
At the moment, it feels like we have two options:
1) Puppet, then annex, or
2) Raze.
If the player takes control of the sacked city, then we still only have two "good" choices:
1) Puppet, then annex, or
2) Sack, then raze.
Having the city remain in the opponents control would give a "true" third and distinct option, one which isn't helpful for a conquest victory at all, but which would give other kinds of victory paths a reason to build offensive and defensive military units. That said, I think sacking needs some sort of heavy penalty associated with it, like a heavy diplomacy hit, because as it is, it seems like a lot of good and not a lot of bad. I would say that sacking a city would give less gold than puppeting or razing, but would instead give other benefits, like stealing population and great works, or destroying world wonders. The choices would then be:
1) Do you want to conquer and take a new city? Then puppet and annex.
2) Do you want to conquer, but don't want a new city? Then raze.
3) Do you not want to conquer, but instead cripple an opponent? Then sack.
That's how it would function in my head, but I'm also aware that it would take a lot of new coding. I'm not a programmer, I just enjoy making game systems, so I fully understand if it couldn't be implemented.
Another option I just thought of would be something similar to the barbarian's ransom mechanic--the diplomacy screen pops up, and you offer to not take the city if the opponent gives you something in return.