Remap Top-Row Number Keys
Ukelele should be able to kind of do this by making 4 a "deadkey" that generates the uppercase letter for any key typed after it, unless there is a limit on the number of keys you can have in such a sequence.  (Just like alt + e is a deadkey that generates acute accented versions of any vowel typed after it)

Of course this is not exactly like Shift, because you can't hold it down, you have let 4 go before you hit the next letter.