you already did most of the coding correctly, I checked your code and it works fine except for your second condition in your go function for children and adults.
One way to do the same is to add a turtle, such as a sitting one? Variable and make it false during initialization and make it true if the turtle is sitting on the bench. And just ask turtles with false seated? look for another bench.
turtles-own [seated?]
ask kids with [not seated? ][
rt random 10
fd 1
if pcolor = red and not any? other turtles-here [
move-to patch-here
set seated? true]
]
ask adults with [not seated?]
[
rt random 10
fd 1
if pcolor = red and not any? other turtles-here[
move-to patch-here
set seated? true]
]
, pacth,
ask patches with [pcolor = red ][set plabel count turtles-here]