I won't pretend to be a coder, or a game designer, but this seems like something that could do with being considered. Here's my own small idea of how to simulate distance in combat.
One: Each weapon is given it's own generalized effective distance. Most unarmed attacks obviously have the least possible range, going up to short blades, followed by melee weapons, long blades and short-ranged firearms, followed by medium, and then long range firearms.
Two: Each room is given it's own generalized size. A street is a Huge space; characters would need to run up on each other, through a crowd, to attack. Something like a bedroom is a Small space; most anyone would be able to attack with anything they have in such a small area.
And then have those two ideas... mesh together somehow. Characters wielding melee weapons would have to approach each other in order to attack each other; closing the distance in order to enter their own effective ranges. The speed of this would probably be determined by each character's own personal speed. If Person A has a longer-ranged weapon, but their opponant only has their fists, maybe Person A would be able to get some free swings/shots/slices off while their oppant needs to continue to close in in order to deliver a beating. Like I said, I'm not a game designer; this is just my first, sloppy idea as to how this could be remedied.
Maybe some of you also have some similar combat gripes, and have ideas to fix them?