App-V seems to be what you're looking for, however this is a corporate solution and so is rather big and ugly to set up, and probably overkill for your needs. It is however supported on Server 2003.
I would recommend that you instead upgrade to Server 2008 or higher, and use RemoteApp in your environment. This is far simpler to setup, but the number of apps in use will be restricted to however many users can logon to the server at the same time. This by default is 2, but with Terminal Services enabled can be increased. Further limitations are at the end of this answer.
Server Side:
To enable RemoteApp you'll need to edit the registry on the server:
Open regedit and browse to HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList.
Edit the value named fDisabledAllowList to equal 1. If it doesn't exist, create it as a DWORD value:

Create a new subkey called Applications.
Under this new key, add a further key for each application you wish to virtualise - you can name it whatever you like, but it's useful to name it something relevant - I created one called Wireshark.
Under these new keys, you need two new values:
Name (string) which is a friendly name to the application. Remember these - you'll need them later!
Path (string) which is the full path to the application on the server:

That's the server configuration done, so now it's on to the clients.
Client Side:
You need to customise an RDP connection file for each application you want to launch. The quickest way to do this is:
Load up Remote Desktop Connection (mstsc.exe), configure whatever parameters you need (such as the server address, clipboard access and printer redirection) then save the settings to an RDP file using the Save As button:

You only need to do this once, and just copy the RDP file for each new application.
Open the RDP file in notepad or another text editor.
Find and edit or create the following lines:
remoteapplicationmode:i:1
alternate shell:s:rdpinit.exe
disableremoteappcapscheck:i:1
remoteapplicationprogram:s:[The application name you set on the server earlier]
Save the file. Now, double-clicking on the file should launch the application:

Limitations
Some applications won't run like this, mostly ones that display themselves in some non-standard ways. Java applications generally don't work either.
Your users need to remember that the application is running on the server, so for example when opening and saving files, the C: drive is the one on the server, not on their client machine. (Side note: This is quite handy with regards to Wireshark, as I can run it on the internet gateway for packet captures but it appears on my desktop).