I don't have an IDE set up in front of me at the moment so I can't bug check it, but yeah thats the general idea packaged into a hullmod.
You should use modifyMult instead of modifyPercent though to follow the general trend of "reductions apply multiplicatively" that bonuses and penalties have in the game. (Also I don't recall off the top of my head if modifyPercent takes the whole number of percent or the fraction, so giving it .7 might make it .7% faster...not sure).
The only downside of using hullmods is that you need to add the hullmod to everything. An everyFramePlugin has the same internal logic, it just loops over all ships manually instead of having the ships themselves do the check. IIRC the correct way to loop over all ships is to use
Global.getCombatEngine().getFleetManager(FleetSide.PLAYER).getDeployedCopyDFM()
which returns a list of deployedFleetMembers of the player side. There would need to be another call for the enemy. Each of these lists can be looped through and the ShipAPI instance of the DFM gotten from dfm.getShip(), and then you can use the same logic as in the hullmod. Again this is without access to testing so I might ahve messed something up, but thats the general way.