So far with this information, we have a two table relationship where::
Case Worker >>>> has many >>>> Cases
A summary field established in the Case Worker parent table will count the number of Cases for the Case Worker, [# of Cases}
Another [Max Date] summary field in the Case Worker parent table will give you the latest date a Case was created. It could be based on [Date Created] or another Date field you wish to establish. Summarize > Maximum > [Date field].
Create a report in the child Cases table that lists cases in Ascending order based on the [Date Created] or whatever date field you wish to use for the summary max date field.
{{ Correction: The report described above is to be made in the Parent Case Worker table }}
Create a formula column in the parent Case Worker's table where the [Case Worker Name] is displayed only if they have less than 150 cases. Call the formula field, [Available Case Workers]. The formula field would look something like this::
If([# of Cases]<150, [Case Worker Name], "")
In the Child Cases table, create a drop down selection list field based on the parent's Case Worker formula field, [Available Case Workers]. In the properties for this selection list field, you'd choose select from different table and navigate to that formula field.
In the Cases child table, that [Available Case Workers] formula field should list only those names of Case Workers that are available in earliest case date to latest case date order, according to the formula.
Let us know how this helps.