Hello,
#1 is quite tricky, since you need the same permission for view as for download. The simplest option I see here is in specifying a custom permission set for your type, with a custom permission for download and only use this permission for Share DocLib UI action evaluation. I see no way to effectively guard against download via direct URI (if known or reconstructed by user), unless you are willing to replace the standard download services with custom implementations that check the permission on the repo layer.
#2 can be achieved without custom permissions. Simply define a rule or policy that transfers ownership to the OwnableService.NO_OWNER value when the node is created. This is the best opion since fiddling with the ownership permission on a definition level will likely produce some unwanted side effects due to its global usage.
Regards
Axel