Julia 1.0, 243243 240 bytes
r=readlines()[(R=end;:)]
println.([(a=' ')*"_"^(
l=maximum(length,r)+2)
println.([a*'_'^l
["|/\\<"[(j=1+(i<2)+2(i==R);)]*]rpad(a*r[i]a^la*r[i],l)[1:l]*"|\\*"|\\/>"[j] for i=1:R]
a*"a*'-"^l'^l
replace(raw"? \ ^__^
? \ (oo)\_______
?? (__)\? )\/\
???||----w |
???||?||","'?"=>a^5'=>a^5)])
I was trying to compress the cow but dingledooper's trick was more efficient