Child process usage is set somewhere within the wait3 or wait4 system calls via a struct rusage pointer (wait4(2)). Under the bash sources, we find:
$ egrep -r 'wait[34][[:blank:]]*\(' .
./jobs.c: wait3 ((union wait *)statusp, options, (struct rusage *)0)
./jobs.c: wait3 (statusp, options, (struct rusage *)0)
./jobs.c: wait3 (statusp, options, (int *)0)
$
The blank (struct rusage *)0 indicates that the resource usage will not be returned to bash. A struct rusage search does turn up time_command function in execute_cmd.c, and this does appear to collect usage information via getrusage(2). However, this is for the TIMEFORMAT of the time builtin, and does not appear to intersect with the history code. Without patching bash, I guess you'd have to do some sort of kluge involving running everything under time and then capturing the standard error the time information appears on to some file?