Based on this experiment with ZFS it appears that using 'zfs replace' on a good or semi-good disk will keep the disk in use during the replace. 

  pool: test
 state: DEGRADED
status: One or more devices is currently being resilvered.  The pool will
        continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
  scan: resilver in progress since Thu Dec  8 18:04:35 2016
    1.50G scanned out of 67.1G at 102M/s, 0h10m to go
    676M resilvered, 2.24% done
config:
        NAME          STATE     READ WRITE CKSUM
        test          DEGRADED     0     0     0
          raidz3-0    DEGRADED     0     0     0
            spare-0   ONLINE       0     0     0
              loop1   ONLINE       0     0     0
              loop10  ONLINE       0     0     0  (resilvering)
            spare-1   DEGRADED     0     0     0
              loop2   OFFLINE      0     0     0
              loop11  ONLINE       0     0     0  (resilvering)
            spare-2   ONLINE       0     0     0
              loop3   ONLINE       0     0     0
              loop12  ONLINE       0     0     0  (resilvering)
            spare-3   ONLINE       0     0     0
              loop4   ONLINE       0     0     0
              loop13  ONLINE       0     0     0  (resilvering)
            loop5     ONLINE       0     0     0
            loop6     ONLINE       0     0     0
            loop7     ONLINE       0     0     0
            loop8     ONLINE       0     0     0
            loop9     ONLINE       0     0     0
        spares
          loop10      INUSE     currently in use
          loop11      INUSE     currently in use
          loop12      INUSE     currently in use
          loop13      INUSE     currently in use
          loop14      AVAIL   
          loop15      AVAIL   
          loop16      AVAIL