I put the blame almost completely on the friend. It's rude to be so completely oblivious that you not only forget that it's Valentine's day, but also fail to realize that steak and lobster is a special couple's meal. It's true that not all couples celebrate Valentine's, but in the absence of clear evidence to the contrary, one should assume that a couple cooking steak and lobster on the day is planning on a romantic evening. Social cluelessness may not be deliberate, but that doesn't mean that it's not rude. It's also rude to pour yourself such a stiff drink that you can't drive for hours afterwards.
OP, since you were annoyed, you could have easily told the friend that it was time for your special Valentine's dinner with your dh. If he couldn't drive, you could've called him a cab (at his expense). There was no need for you to seethe in a separate room all night. Your dh also should have let him know that it was time to leave.
ETA: It's most probable that the friend realized that he was ruining your plans, but didn't care because he didn't want to spend the evening alone.
ETA: Having read the update, I would cool the relationship with this guy, and have a very serious talk with my dh. I wouldn't want someone so selfish in my house again.