If you're reason for not wanting to use categories is because they're already used, you can have multiple category group in a channel group. So, Category Group 1 could be whatever is being used now and then Category Group 2 could be used to associate it with some other channel. I'm doing something similar on a recent project.
Shift-clicking, I believe, is ...
Since you're using a multiselect element, you're posting an array of data when the entry is saved. But you can't simply insert an array into the database - you need to turn it into a string.
So in your fieldtype's save() method, you need to do something like:
return implode('|', $data);
Then you need to turn your data back ...