First of all, regarding permissions, check this out:
http://www.codeplex.com/SPDActivities
I have some custom workflows, where I use these custom activities to
apply certain permissions (even at item level) at certain points in
the workflow.
I agree that it would be nice if workflows in SharePoint were
functional when the user doesn't have edit rights to the file. That
problem has been very frustrating to me in a current project.
Regarding your question about the custom workflow not being available
after it has been run... that hasn't ever been a problem for me. I
have a couple of custom (sp designer) workflows that are set to run
as "manual", and are always available after they have been run. Does
your workflow show as still being "in process"? If so, then you're
right, it wouldn't be available again until the workflow has
completed.
When creating workflows, be sure to have a finite end to the
workflow. So, after the activity has happened, put a "STOP" in
there. Also, create an "if else", and put a STOP in there also.
That way, whatever action is taken or not taken, the workflow still
knows to STOP, and not run indefinitely.