You can write a custom plugin for your database, and have the sync framework use it. That'd be more suitable for sharing a large dataset.
I don't want to be copying the data everywhere (as currently happens) - I want the GUI app to communicate to a server app which does the processing on the data held centrally and then communicate back the results.
In that case, it'd be better to send it a job (in a single or multiple pieces) and process it on the client. There's multiple ways to communicate the data, you might want to take a deeper look at WCF.