Both of these questions are of relevance to me in my current project. I would have thought that putting an EXE on the same machine as the Citrix server would make sense, so long as the Citrix VM's have mappings to a share on that server.
However, in my case, I do download a copy of the DBC (containing nothing but a connection and remote views) and a local EXE to each workstation accessing my application. I have proven by looking at open files on the server that the clients are using their own local EXE which has just got to be faster. This has another use though: because the client program icon points to an EXE on the server, I can use this to determine if there has been a new version of the 'client' EXE copied on, if so download it, then prompt the user to start it again. Issues could arise if users were accessing the EXE on a server when I tried to rebuild it.
Anyway, keep me posted pleased.
Simon