All your requirements are absolutely possible with QlikSense.
Firstly you can have a huge collection of visualisations as you need. As Qlik sense allows you to build you own visualisation extensions and you are never constrained to using only the ones which are implicitly provided by Qlik. Not to forget, you can still leverage the power of Qlik's association engine when you build these extensions/visualizations.
Is it possible using the API to take a visualization from a library and copy it into a new folder or work space?
This can be achieved in a different way in QlikSense. You will be needing the sense server to achieve this. You being the admin , can easily restrict or divide the resources(data sets-> called as data connections in sense) and visualisations as you need by using the security rules. Infant you have the leverage to do more, like sorry telling, and distributing your insights among a group.
Additionally, is it possible to set the data set for the visualization via the API?
The section access in Qlik helps you curtail data. You have full control over the data being distributed among the users.
Here are the links to some useful resources.
https://help.qlik.com/sense/1.1/en-us/developer/- API's Link