Some of the things you write seem to be not entirely true. Halsin isn't really forced onto you. You can kill him if you want as you write yourself, the game works just fine if you do.
Even if you have him in your camp, you do not have to have him in your party. I never took him along, so I never got the scene and dialogue between SH and him. If I'm not mistaken, you anyway would only get the scene for a foursome if you first ask for that yourself. If you shut down those drow from the start (or because seen from a PG POV, you are in a relationship as you say, maybe don't approach them at all, because it's clear they are prostitutes), you also wouldn't get that scene, even if you have Halsin in your party, or?
At that point of the story, Halsin's main part if over anyway, so even if you want a druid in your party, you can take Jaheira instead (who has more interactions in Act 3 anyway afaik).
If you romance SH, and you do not make a certain decision in the game to push her to wholly dedicate herself to someone else (but which is probably the most prior telegraphed plot point in the game, so no surprise there), she will not abandon you in the end. If I remember the ending correctly, it's the opposite, you kind of make plans what you'll do together after this is all over.
I also don't think it's ideal, but if you are bothered by it, you can avoid most of it.
My fault, I wrote 'I didn't want him in my party', I meant camp. And yes, to me Halsin is forced, in the same way that Withers is forced, basically if we dont get to choose them (like every other companion), they are forced. Since we can't kick any of them out...
About 'killing him and the game works fine', you're right; I think you can also kill every NPC and the game will works just fine as well, though I'll probably wouldn't do it (maybe if I'm evil Dark Urge?). And that takes me to my point:
This is a ROLEPLAY game. Everything from dialogue, fight, your character, and probably more stuff; are rooted in a roleplay system. Interactions, not trigger by the Main Character, are bad for a ROLEPLAY game.
That's where everything breaks apart to me. I didn't delete my saved file, with all my hours, because I was simping SH (which I wasn't doing); I deleted it because the story I was building with her (with rules and plot established by the game) were broken by her being in love with Halsin.
The Shadowheart that was surviving with my Tav (good Dark Urge) was not what was portrayed by OP post, I didn't even care if she's poly or not, she's not real. But the roleplay factor was gone to me.
Why will the Shadowheart that my Tav was struggling so hard to survive with (I was playing Tactician, with only 2 characters) and that loved him/her so much will want to share him/her when her quest is over? For this to be acceptable, in a roleplay view, Tav should have tried to or already being in a relationship with the other lover.
To be fair, those are my stupid rules. And I know not a lot of people roleplay these games. But to me, that's where the fun is. I could have ignored it and keep playing but as I said, this are the only games that I roleplay. I want to life my little fantasy without a bear trying to bang my partner. lol
But I think we all can agreed that the dialogue lines OP was complaining about are totally OUT OF HER CHARACTER (at least what was shown to us through her conversations).
She's like: 'Halsin, bang me! Tav heals my heart and you dirty my p***y'. That's just wrong.
Disclaimer: I haven't played any of this myself, I've seeing couple of post about it and have generally of how to trigger it but I myself haven't played it.
PS: this is the nerdiest post I've wrote in my life.
Edit: forgot to mention that if MC hasn't shown interest in another lover, and you ended up talking with the drow at the brothel (because you know, videogames), ideally not just Shadowheart but any other partner, that already 'loves you', shouldn't be open to share you. Or at least, show some kind of selfcontrol (to respect of Tav relationship) if they themselves are into polygamy. But anyone, we're talking and only developers know how hard has to be trying to implement any of these stuff. They should hate us. lol