You can modify LCM workflow. Add a new step before step initialize step in LCM. in this new step read the plan. now you can check how many “add” are there in the plan. if your condition meets then move to error step else continue. in the error step you can display why this request cannot be submitted as user requested more than 20 entitlements.
for eg.
<Step icon="Start" name="Start" posX="25" posY="10">
<Transition to="CUSTOM_STEP"/>
</Step>
now you can create your own libraries and pass the plan, where you can calculate adds etc etc.
<Step action="script:getAccessRequestErrorMessage(identityName, plan)" name=CUSTOM_STEP" posX="25" posY="10" resultVariable="accessRequestErrorMessage">
<Transition to="Exit With Error" when="script:null!=accessRequestErrorMessage"/>
<Transition to="initialise"/>
</Step>