There must be some communication across the network between client and server. A Visual Studio Web Performance Test can be used to simulate one end of that communication and so apply load to the other end. A common performance test simulates many clients to see how the server behaves. To do this you need to generate the same communications as the client would do.
One approach is to run Fiddler2 on a client machine to capture all the network traffic generated by the client, to export the Fiddler2 log as a Visual Studio Web Performance Test and then use that in a Visual Studio Load Test.
Performance of the client is often less important. Only one client runs per computer and some client performance issues can be resolved by using a more powerful computer. Other client issues can be resolved, or at least investigated, by the usual methods for optimising a program.
For you Coded UI question. Yes, Coded UI uses the mouse, keyboard and screen of a computer so only one Coded UI test can be run at a time on a computer. In a load test, Coded UI tests can be run on both physical or Virtual Machines. The number of simulated users is limited by the number of machines available.
I suggest using Task Manager or PerfMon on your client while manually using the application to get an idea of client performance. The perception of overall client performance is more likely to be controlled by server performance and the nature and quantity of the communications between client and server than it is by processing within the client.
A Load Test can combine Coded UI and Web Performance tests. It is possible to create Web Performance tests to keep the server busy with many simulated users. At the same time one or two Coded UI tests could run as part of the same load test. The Coded UI tests could
have code to collect timing data. The load test itself can collect any PerfMon counter available on other computers so it could collect performance data of the computers running Coded UI tests.