Er...PL/SQL - from 7+ at least - can do either positional arguments or named arguments.
ie:
foo ( argument1, argument2, ... argumentN)
or
foo ( arg1=argument1, argN=argumentN, etc)
2nd - create a second constructor and use polymorphism to reduce the number of arguments.
ie:
foo (argument1, argument2, ... argumentN)
foo (argument1, argument2) { foo(argument1,argument2, argument3 = null; argument4 = null; ... argumentN = null)) };