1. Yes, it's possible using the following JS function
EJEJC_multiAdd(Array('purchase_url_1','purchase_url2','purchase_url3')
);
// you can have any number of URLs you want
Purchase URLs are the URLs you get from E-junkie's add to cart buttons.
Example:
<a href='javascript:EJEJC_multiAdd(Array('purchase_url_1','purchase_url2'
,'purchase_url3'));' >add multiple products</a>
2. If you break down the code from a link to a form instea, it's possible. See a live site using it at
http://www.bunkbedking.com/bunk-bed-stairway-honey
3. A product can be digital or tangible or both, but there is no way for that to be controlled via variations. You can however using variants has two versions - digital only and digital + shipping. The downside to that will be that buyers opting just for digital option will still need to provide their shipping address.