1) With the quantity of carriers you have, BGP is going to provide only a rough system of load balancing. You will have to tweak which prefixes you announce to which providers in order to balance inbound traffic. Outbound traffic will likely take care of itself, but you can do some selective filtering if trafffic isn't going where you want it to go.
In order to help more, you'd have to post more details about what specific traffic isn't going where you want it, if any.
2) Consider class-based weighted fair queueing (CBWFQ) on your customer's link. Among other things, it allows you to define a traffic class and then assign a reserved quantity of bandwidth for that class. It should fulfull your requirement.
http://www.cisco.com/univercd/cc/td/doc/product/software/ios120/120newft/120t/120t5/cbwfq.htm